почему TestNG выполняет @AfterMethod как @Test, если мой первый тест пройден? - PullRequest
1 голос
/ 29 января 2012

почему 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...