package test.factory; import static org.testng.Assert.assertEquals; import java.util.ArrayList; import java.util.List; 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; /** * Test that setUp methods are correctly interleaved even * when we use similar instances of a same test class. * * @author cbeust */ public class Sample2 { private static List<String> m_methodList = new ArrayList<String>(); @BeforeSuite public void init() { m_methodList = new ArrayList<String>(); } @BeforeMethod public void setUp() { ppp("SET UP"); m_methodList.add("setUp"); } @AfterMethod public void tearDown() { ppp("TEAR DOWN"); m_methodList.add("tearDown"); } @AfterSuite public void afterSuite() { String[] expectedStrings = { "setUp", "testInputImages", "tearDown", "setUp", "testInputImages", "tearDown", "setUp", "testImages", "tearDown", "setUp", "testImages", "tearDown", }; List<String> expected = new ArrayList<String>(); for (String s : expectedStrings) { expected.add(s); } ppp("ORDER OF METHODS:"); for (String s : m_methodList) { ppp(" " + s); } assertEquals(m_methodList, expected); } @Test public void testInputImages() { m_methodList.add("testInputImages"); ppp("TESTINPUTIMAGES"); } @Test(dependsOnMethods={"testInputImages"}) public void testImages() { m_methodList.add("testImages"); } private static void ppp(String s) { if (false) { System.out.println("[Sample2] " + s); } } }