java - TestNG @BeforeMethod 方法驻留在父类(super class)中并且运行特定组时未调用

标签 java testing testng

我正在尝试使用一个组来运行与我正在从事的工作相关的测试子集,称为“当前”。问题是,如果我使用父类(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/

相关文章:

java - 从数据库中检索数据并递增 1

java - 添加测试后构建失败,即使脚本中没有错误。在 eclipse 中使用 selenium,testng 和 maven

java - Selenium 页面对象抛出 InvoicetargetException

java - 方法取决于不存在的组 - Testng

java - 正确的程序可能会被错误地同步吗?

java - 在单个类中实现比较器和比较器接口(interface) : Pros and Cons

java - 嵌入式 if 语句的替代方案?

bash - 从 bash 移植到 Gradle

testing - tfs 2012中的测试影响分析

debugging - 是否有一种工具可以根据传入的参数值计算方法中发生的情况?