package test;

import org.testng.annotations.AfterTest;
import org.testng.annotations.Test;

/**
 * this test verifys that the test class is instantiated exactly once regardless of how many test
 * methods we have, showing that TestNG semantics is quite different from JUnit
 */
public class CtorCalledOnce {
  public static int instantiated = 0;

  public CtorCalledOnce() {
    instantiated++;
  }

  @Test
  public void testMethod1() {
    assert instantiated == 1 : "Expected 1, was invoked " + instantiated + " times";
  }

  @Test
  public void testMethod2() {
    assert instantiated == 1 : "Expected 1, was invoked " + instantiated + " times";
  }

  @Test
  public void testMethod3() {
    assert instantiated == 1 : "Expected 1, was invoked " + instantiated + " times";
  }

  @AfterTest
  public void afterTest() {
    instantiated = 0;
  }
}
