почему TestNG выполняет @AfterMethod как @Test, если мой первый тест пройден?
Например, выход теста в случае неудачи первого теста:
1 test passed, 1 test failed.(3599,0 s)
TestSuite FAILED
run FAILED: check5=3 Expected: <3> got: <5>
run passed (1.0s)
Но если я просто переключу порядок тестовых случаев, так что первый пройдет, я получу это:
3 test passed, 2 test failed.(2867,0 s)
TestSuite FAILED
run passed (1.0s)
run FAILED: check5=3 Expected: <3> got: <5>
AfterMethod FAILED (4,0 s) // <--- wtf, this is not an @Test
AfterTest passed (5,0 s)
AfterSuite passed (15,0 s)
что происходит? мой testngsuite.xml:
<suite name="TestSuite_03">
<test name="TestCase_17">
<groups>
<run><include name="functest"/></run>
</groups>
<classes>
<class name="TestStep_003" desc="will pass" />
<class name="TestStep_012" desc="will fail" />
</classes> ...
Я использую Maven, TestNG и Java через NetBeans
моя структура:
public abstract class TestCommon
{
@BeforeSuite(groups={"functest"})
public void BeforeSuite()
{
// clean report folder
}
@BeforeTest(groups={"functest"})
public void BeforeTest()
{
// start selenium browser
}
@AfterMethod(groups={"functest"}) // this is not a @test, still gets shown as failed
public void AfterMethod()
{
// check for failure and capture screenshot
}
@AfterTest(groups={"functest})
public void AfterTest()
{
// close browser
}
}
public class TestStep_003 extends TestCommon
{
@Test(groups = {"functest"})
public void run()
{
assertThat(5, Matchers.equalTo(5)); // will pass
}
}
public class TestStep_012 extends TestCommon
{
@Test(groups = {"functest"})
public void run()
{
assertThat(5, Matchers.equalTo(3)); // will fail
}
}
Еще одна проблема в том, что выход теста не в порядке, временные метки
не старше -> новее, между старыми есть новые:
вот так выглядит мой вывод:
1327840359762: TestStep_012.AfterMethod // this is not the oldest timestamp!
1327840359763: TestStep_003.run
1327840359765: TestStep_003.AfterMethod
1327840357189: TestStep_012.BeforeSuite
1327840357192: TestStep_012.BeforeTest
1327840359758: TestStep_012.run
1327840359762: TestStep_012.AfterMethod
1327840359763: TestStep_003.run
1327840359765: TestStep_003.AfterMethod
кроме того, есть только 2 метода TestStep_003.run и и TestStep_012.run,
и все же это показывает AfterMethod 4x