4

I`m using allure V1.4.8 +TestNG. It looks like TestNG adapter incorrectly places @AfterMethod in report - basically it places AfterMethod from test case into next testcase.

Here is the simple code:

    @Step("a test1")
    @Test
    public void Test1(){
    }

    @Step("a test2")
    @Test
    public void Test2(){
    }

    @Step("before method")
    @BeforeMethod
    public void beforeMethod(){     
    }

    @Step("after method")
    @AfterMethod
    public void methodCleanup()
    {   
    }

And here is the generated report:

<test-cases>
    <test-case start="1424347388060" stop="1424347388730" status="passed">
        <name>Test1</name>
        <steps>
            <step start="1424347388011" stop="1424347388014" status="passed">
                <name>before</name>
                <title>before test</title>
                <attachments/>
                <steps/>
            </step>
            <step start="1424347388036" stop="1424347388036" status="passed">
                <name>beforeMethod</name>
                <title>before method</title>
                <attachments/>
                <steps/>
            </step>
            <step start="1424347388067" stop="1424347388067" status="passed">
                <name>Test1</name>
                <title>a test1</title>
                <attachments/>
                <steps/>
            </step>
        </steps>
        <labels>
            <label name="host" value=""/>
            <label name="thread" value=""/>
        </labels>
    </test-case>
    <test-case start="1424347388747" stop="1424347389056" status="passed">
        <name>Test2</name>
        <steps>
            <step start="1424347388739" stop="1424347388739" status="passed">
                <name>methodCleanup</name>
                <title>after method</title>
                <attachments/>
                <steps/>
            </step>
            <step start="1424347388746" stop="1424347388746" status="passed">
                <name>beforeMethod</name>
                <title>before method</title>
                <attachments/>
                <steps/>
            </step>
            <step start="1424347388750" stop="1424347388750" status="passed">
                <name>Test2</name>
                <title>a test2</title>
                <attachments/>
                <steps/>
            </step>
        </steps>

     </test-case>
</test-cases>

1 Answers1

1

It's problem of TestNG adaptor. In our adaptor we use ITestListener listener and onTestSuccess, onTestFailure, onTestFailedButWithinSuccessPercentage and onTestSkipped methods to mark test as finished. But TestNG call the methods before @AfterMethod.

I don't know is there a way to handle befores and afters (maybe we can use other listener, an example IInvokedMethodListener). You can investigate this problem and send us pull request.

Hope it helps

Update

New Allure TestNG integration has support for test fixtures. So you need to upgrade to Allure 2. For more details see the docs https://docs.qameta.io/allure/2.0/#_testng

Dmitry Baev
  • 2,075
  • 10
  • 22
  • I am facing the exactly same issue. I dont have much knowledge about the listners, could you please suggest me what should I do right now to solve this problem. – Nikunj Aggarwal Aug 04 '16 at 10:38