testng.xml 到底是什么?UI测试框架搭建基础问题
没接触过的小伙伴总是听xml这xml那的,却不知道它到底的职责和作用是什么,今天剖析一下; 没有xml,testng也能跑,它并非必要条件; testng运行要么靠纯注解@test,要么通过| testng.xml 显式告诉 TestNG 跑哪些类、哪些方法、用什么参数
什么时候需要些xml?
1.切换平台
一般没有xml的basetest模块会写默认参数 @Optional("android") ,默认跑安卓端,如果你的xml加了
<suite name="MobileSuite">
<test name="AndroidTests">
<parameter name="platform" value="android"/>
<classes>
<class name="tests.LoginTest"/>
</classes>
</test>
</suite>
想跑ios,改value就行
2.Smoke / Regression
用例是@Test,我们支持给它打标签,比如@Test(groups = {"smoke"})
<test name="SmokeTests">
<groups>
<run>
<include name="smoke"/>
</run>
</groups>
<classes>
<class name="tests.LoginTest"/>
</classes>
</test>
3.并行
<suite name="MobileSuite" parallel="tests" thread-count="3">
...
</suite>
4.控制跑特定测试用例
<test name="OnlyLoginTest">
<classes>
<class name="tests.LoginTest">
<methods>
<include name="testValidLogin"/>
</methods>
</class>
</classes>
</test>
5.监听器
监听器一般通过 testng.xml 注册。
标签问题,有哪些标签?


如何管理? 有时候要跑全量,有时候跑特定
Maven Profile
<profiles>
<!-- 模式 1:用 testng.xml 控制(按组跑) -->
<profile>
<id>suite-mode</id>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- 模式 2:不用 testng.xml,自动扫描 -->
<profile>
<id>auto-mode</id>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- 不配 suiteXmlFiles,让 Surefire 自动扫描 -->
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
要用的时候:
# 按 testng.xml 跑
mvn test -P suite-mode
# 自动扫描所有 @Test
mvn test -P auto-mode
浙公网安备 33010602011771号