我正在尝试使用一个组来运行与我正在从事的工作相关的测试子集,称为“当前”。问题是,如果我使用父类(super class)在 @BeforeMethod 中进行一些设置,则该方法会在我运行所有测试时运行,但在我仅使用指定的“当前”组运行时不会运行。
因此,当我运行所有测试时,emptyTest 失败,因为 @BeforeMethod 被调用,而当仅运行 group current 时,该方法未被调用。注意:如果我将 @Test(groups = {"current"}) 添加到子类,那么它会运行 - 但是,它也会运行所有未标记为“current”的子类,这违背了“current”组的目的.
如果有更好的方法来完成此行为,我愿意接受所有解决方案。
谢谢, 赎金
父类(super class):
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)
您当前正在运行的组。
关于java - TestNG @BeforeMethod 方法驻留在父类(super class)中并且运行特定组时未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5020260/