【发布时间】:2020-12-14 07:18:38
【问题描述】:
首先作为信息:我将每个@Test 放在不同的类中(所以当然每个类只有1 个@Test 注释)。
其实我的目标是想用不同的参数重新运行同一个类,但我想先运行另一个类。
我试图找到许多 TestNG 不允许在一个 <test> 中重复类或 @Test 方法注释的引用。提供的重复是一个invocationCount 函数,我看到了invocationCount,但我无法用invocationCount 实现我的目标,因为这个函数同时重复一个@Test,然后我可以运行另一个@Test .
public class SimpleTest1 {
@Test
@Parameters({"acc"})
public void historyTransfer(String acc) {
System.out.println(new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(Calendar.getInstance().getTime()));
}
}
public class SimpleTest2 {
@Test
@Parameters({"senderAcc", "beneficiaryAcc", "amount"})
public void tranfer(String senderAcc, String beneficiaryAcc, String amount) {
System.out.println(new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format(Calendar.getInstance().getTime()));
}
}
我想像下面的配置一样运行:
<suite name="Suite">
<test name="My Test" >
<classes>
<class name="com.SimpleTest1">
<parameter name="acc" value="11111"></parameter>
</class>
<class name="com.SimpleTest2">
<parameter name="senderAcc" value="11111"></parameter>
<parameter name="beneficiaryAcc" value="22222"></parameter>
<parameter name="amount" value="100"></parameter>
</class>
<class name="com.SimpleTest1">
<parameter name="acc" value="22222"></parameter>
</class>
</classes>
</test>
</suite>
但是上面的配置并没有按计划进行,因为第二个SimpleTest1没有执行。
然后我尝试在单独的<test> 中运行它,就像下面这样并成功,但我面临着每个<test> 延迟时间的新问题。
串行(非并行)运行多个<test>如下:
<suite name="Suite">
<test name="My Test1" >
<classes>
<class name="com.SimpleTest1">
<parameter name="acc" value="11111"></parameter>
</class>
</classes>
</test>
<test name="My Test2" >
<classes>
<class name="com.SimpleTest2">
<parameter name="senderAcc" value="11111"></parameter>
<parameter name="beneficiaryAcc" value="22222"></parameter>
<parameter name="amount" value="100"></parameter>
</class>
</classes>
</test>
<test name="My Test3" >
<classes>
<class name="com.SimpleTest1">
<parameter name="acc" value="22222"></parameter>
</class>
</classes>
</test>
</suite>
TestNG Maven 依赖:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.0.0</version>
<scope>compile</scope>
</dependency>
万无一失:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
IDE: Eclipse(版本:2018-09 (4.9.0))
操作系统: macOS Mojave(10.14.6 版)
输出:
[RemoteTestNG] detected TestNG version 7.0.0
22-12-2020 21:59:32
22-12-2020 21:59:47
22-12-2020 21:59:57
===============================================
Suite
Total tests run: 3, Passes: 3, Failures: 0, Skips: 0
===============================================
但是在第一个<test>完成后,在下一个<test>运行之前有大约10秒的延迟,以及下一个测试。
注意:我认为这是 IDE 的问题(我使用 Eclipse),但事实并非如此。我尝试通过 IDE 和命令行以 2 种方式运行它,并给出了关于此延迟问题的相同结果。
通过命令行使用此命令:
mvn clean test -Dsurefire.suiteXmlFiles=testng.xml
上面有什么减少延迟时间的配置吗?
【问题讨论】:
-
请提供更多信息。没有您对 SimpleTest 所做的一切,我们无能为力
-
您在两个测试中都在运行什么 SimpleTest?尝试在套件中使用
" verbose=”10"以获取更多详细信息 -
@user7294900 仅包含一个 @Test 注释,代码为
System.out.println("test");,仅此而已。我的问题不清楚吗? -
尝试使用
<suite name="Suite" verbose="10">运行,为什么你需要在两个测试中使用相同的测试类?也许延迟是每次测试都加载你的上下文 -
@Tea 我已更新问题以获取更多信息。