我有一个java maven项目,我想用多线程测试。我在src / test中有testng.xml,maven surefire插件配置为使用它。就像这个页面一样: http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html
编辑:添加了surefire pom条目
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
我正在使用surefire 2.12.4。
这是我的testng.xml文件
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Testng" parallel="methods" thread-count="3">
<test name="all" annotations="JDK5">
<packages>
<package name="my.package.*"/>
</packages>
</test>
</suite>
在几个测试方法中,我有一个print语句:
System.out.println(Thread.currentThread().getName());
每次运行时总是具有相同的输出(pool-1-thread-1)。如果testng并行运行,那么就会运行不同的线程。
我的问题是:为什么testng没有运行多线程?有没有更好的方法来检查testng是否正在运行多线程?
编辑:课程或方法
当我使用线程运行时,每个测试类似乎都在它自己的线程中运行,但不是每个方法都运行。在testng.xml中我设置了parallel =“methods”,因此它应该按照方法执行。每种方法都不能吗?
答案 0 :(得分:0)
我找到了答案,我没有给它足够的线程。由于我的项目有很多测试,因此testng不会为每个方法创建新的线程。我将其更改为10个线程并修复了它。
答案 1 :(得分:0)
在这种情况下,TestNG不会并行运行。您需要定义ThreadLocal以在线程中定义不同的浏览器。 使用:ThreadLocal,并在不同的实例中定义浏览器。在这种情况下,您将获得不同的浏览器ID ..