package test.factory; import static org.testng.Assert.assertEquals; import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeSuite; import org.testng.annotations.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Test that setUp methods are correctly interleaved even * when we use similar instances of a same test class. */ public class Factory2Sample { private static List<String> methods = new ArrayList<>(); @BeforeSuite public void init() { methods = new ArrayList<>(); } @BeforeMethod public void setUp() { methods.add("setUp"); } @AfterMethod public void tearDown() { methods.add("tearDown"); } private static final List<String> EXPECTED_METHODS = Arrays.asList( "setUp", "testInputImages", "tearDown", "setUp", "testInputImages", "tearDown", "setUp", "testImages", "tearDown", "setUp", "testImages", "tearDown" ); @AfterSuite public void afterSuite() { assertEquals(methods, EXPECTED_METHODS); } @Test public void testInputImages() { methods.add("testInputImages"); } @Test(dependsOnMethods={"testInputImages"}) public void testImages() { methods.add("testImages"); } }