如何在TestNG项目中通过Maven运行多组交集的测试用例
如何在TestNG中运行同时属于多个分组的测试用例
你遇到的问题是TestNG默认用逗号分隔分组时是逻辑或(OR)的关系,所以Android,Sync会匹配所有属于Android或者Sync的用例,这就是为什么三个测试都跑了。要实现逻辑与(AND),也就是只运行同时属于Android和Sync的用例,有几种实用方法:
方法1:使用TestNG的组表达式语法
直接在命令行中用&符号来表示逻辑与,注意需要用引号包裹表达式,避免shell解析特殊符号:
mvn clean test -PAndroid -Dgroups="Android & Sync"
这样就只会执行同时包含Android和Sync两个分组的测试用例(也就是你提到的第一个和第三个测试)。
方法2:通过TestNG XML配置文件指定
如果更倾向于用配置文件管理测试范围,你可以创建一个testng.xml,在<groups>标签里用表达式精确指定要运行的测试:
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" > <suite name="AndroidSyncSuite"> <test name="AndroidSyncTests"> <groups> <run> <include name="Android & Sync"/> </run> </groups> <classes> <!-- 替换成你的测试类全路径 --> <class name="com.yourpackage.YourTestClass"/> </classes> </test> </suite>
然后运行Maven命令时指定这个配置文件:
mvn clean test -PAndroid -Dtestng.xml=testng.xml
补充说明
TestNG的组表达式支持更复杂的逻辑组合,比如(Android | iOS) & Sync这样的混合条件,灵活度很高。另外如果你的-PAndroid是Maven的profile配置,确保它的设置不会和TestNG的分组过滤规则冲突即可。
内容的提问来源于stack exchange,提问作者Vladyslav Kuhivchak
相关产品推荐
相关产品推荐

