TestNG @BeforeMethod方法在驻留在超类中并且运行特定组时未调用

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

因此,当我运行所有测试时,emptyTest失败,因为调用了@BeforeMethod,当只运行组current时,不调用该方法。 注意:如果我将@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配置:

                

您的@BeforeMethod需要成为您正在运行的组的一部分。

如果您不想对组的值进行硬编码,并且您认为总是希望运行此方法,则无论您当前正在运行哪个组,也可以使用@BeforeMethod(alwaysRun = true)

你试过@BeforeMethod(groups = {"current"})吗? 我得出结论,TestNG组和inheritance并没有真正起作用。

例如,如果您在组current运行所有内容,则上述方法有效,但如果您运行除group current之外的所有内容并且两个组都使用基类,则上述方法无效。

我目前正在重构所有测试类以消除子类化并改为使用组合。