我希望我的测试套件尽可能灵活——我希望能够:
- 按优先级(p1,p2 ...)运行所有测试 - 这很容易
- 按模块(模块1,模块2 ...)运行所有测试 - 这很容易
- 运行特定优先级和特定模块的测试 - 我不知道
因此我有一些测试:
@Test(groups = {"p1", "module1"})
public void p1module1() {
System.out.println("p1module1");
}
@Test(groups = {"p2", "module1"})
public void p2module1() {
System.out.println("p2module1");
}
@Test(groups = {"p1", "module2"})
public void p1module2() {
System.out.println("p1module2");
}
@Test(groups = {"p2", "module2"})
public void p2module2() {
System.out.println("p2module2");
}
但是如果我做这样的事情
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="qa-selenium">
<test name="My Suite">
<groups>
<run>
<include name="p1"/>
<include name="module1"/>
</run>
</groups>
<packages>
<package name="com.mycompany.qa.selenium.*"/>
</packages>
</test>
</suite>
包含被视为 OR,但我想要一个 AND。在这种情况下,我想创建一个仅执行 p1module1() 的套件
我意识到我可以使用大量的排除 - 在这个例子中
<exclude name="p2"/>
<exclude name="module2"/>
但我真的很想避免这种情况。有没有办法做到这一点,最好没有元编程?