如何跳过从扩展抽象测试类继承的测试方法

时间:2014-06-25 15:24:23

标签: testng

我试图基于使用IAnnotationTransformer实现的自定义注释跳过测试。在类级别设置自定义注释时跳过测试成功,但是从扩展基类继承的测试方法没有被忽略。如果我在抽象类中设置相同的自定义注释,那么一切都按预期工作,但我需要在其他地方使用我的抽象类,并且不能使用自定义注释标记它。

忽略抽象类中的测试方法的最佳方法是什么。任何帮助将不胜感激。

public abstract class AbstractTestCase {

    @Test()
    public void testMethod1(){
        System.out.println("selenium abstarct1");
    }

    @Test()
    public void testMethod2(){
        System.out.println("selenium abstarct2");
    }
}


@SetEnvironment(executionEnvironments = {ExecutionEnvironment.STANDALONE})
public class TestSelenium extends AbstractTestCase {

    @Test()
    public void runSelenium1() {
        System.out.println("runSelenium()");
    }

    @Test()
    public void runSelenium2() {
        System.out.println("runSelenium()");
    }
}

1 个答案:

答案 0 :(得分:0)

您可以通过这种方式完成

  1. 使用<exclude>标签
    如果您正在使用TestNG Suite XML运行测试,则可以执行类似的操作
<?xml version="1.0" encoding="utf-8"?>
<suite name="SUITE">
    <test name="TEST">
        <classes>
            <class name="TestClass">
                <methods>
                    <exclude name="excludedTestMethod1" />
                    <exclude name="excludedTestMethod2" />
                </methods>
            </class>
        </classes>
    </test>
</suite>

因此,TestNG将不会运行类excludedTestMethod1的{​​{1}}和excludedTestMethod2
排除的测试方法可以同时属于TestClassTestClass的超类。

  1. 覆盖超类的测试方法
    在子类中,您可以覆盖不想运行的超类的测试方法。然后TestNG将运行覆盖的内容。
    2.1 如果重写的方法将用TestClass注释标记,则TestNG将不会运行它
    2.2 或您可以提供主体并使用覆盖的测试方法编写所需的测试

这里有更详细的示例

@Test(enabled = false)