java – TestNG @BeforeMethod方法当它驻留在超类中并且运行特定的组时,不会调用它

我正在尝试使用一组来运行与我正在工作的所谓“当前”相关的测试子集.问题是如果我使用一个超类在@BeforeMethod中进行一些设置,那么该方法在运行所有测试时运行,但是当我仅使用指定的“current”组运行时.

所以当我运行所有的测试,emptyTest失败,因为@BeforeMethod被调用,当刚刚运行组当前,该方法不被调用.注意:如果我将@Test(groups = {“current”})添加到子类,那么它运行 – 但是,它运行所有没有标记为“current”的子类,这违反了“当前”组的目的.

如果有更好的方式来完成这个行为,我对所有的解决方案都是开放的.

谢谢,
赎金

超类:

public class TestNGSuperclass {
    @BeforeMethod
    public void failingToShowThatItIsNotRun() {
        Assert.fail();
    }
}

子类:

@Test(groups = {"current"})
public class TestNGCurrentGroup extends TestNGSuperclass {
    public void emptyTest() {}
}

TestNG配置:

<test name="current">
    <groups>
        <run>
            <include name="current"/>
        </run>
    </groups>
    <packages>
        <package name="uiowa.wf.test.*"/>
    </packages>
</test>
<test name="all-tests">
    <packages>
       <package name="uiowa.wf.test.*"/>
    </packages>
</test>
您的@BeforeMethod需要成为您正在运行的组的一部分.

你也可以使用@BeforeMethod(alwaysRun = true),如果你不想硬编码你的组的值,如果你认为你总是想运行这个方法,不管你正在运行的组.

相关文章
相关标签/搜索