Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java testng是否正在运行多线程?_Java_Multithreading_Maven 3_Testng - Fatal编程技术网

Java testng是否正在运行多线程?

Java testng是否正在运行多线程?,java,multithreading,maven-3,testng,Java,Multithreading,Maven 3,Testng,我有一个java maven项目,我希望使用多线程进行测试。我在src/test中有testng.xml,maven surefire插件配置为使用它。就像这一页: 编辑:添加surefire pom条目 每次运行pool-1-thread-1时总是有相同的输出。如果testng是并行运行的,那么将有不同的线程在运行 我的问题是:为什么testng没有运行多线程?有没有更好的方法来检查testng是否运行多线程 编辑:类或方法 当我使用线程运行时,每个测试类似乎都在它自己的线程中运行,但不是每

我有一个java maven项目,我希望使用多线程进行测试。我在src/test中有testng.xml,maven surefire插件配置为使用它。就像这一页:

编辑:添加surefire pom条目

每次运行pool-1-thread-1时总是有相同的输出。如果testng是并行运行的,那么将有不同的线程在运行

我的问题是:为什么testng没有运行多线程?有没有更好的方法来检查testng是否运行多线程

编辑:类或方法


当我使用线程运行时,每个测试类似乎都在它自己的线程中运行,但不是每个方法。在testng.xml中,我设置了parallel=methods,因此它应该按照每个方法执行。每种方法都不行吗

我找到了答案,我没有给它足够的线索。由于我的项目有很多测试,testng不会为每个方法生成新线程。我将它改为10个线程,并修复了它。

在这种情况下,TestNG将不会并行运行。您需要定义ThreadLocal以在线程中定义不同的浏览器。
使用:ThreadLocal,并在不同实例中定义浏览器。在本例中,您将获得不同的浏览器ID。

它适用于我的testng 6.8和maven surefire插件2.12.4以及2.13,测试在不同线程中并行运行。你能详细说明你的pom的surefire部分吗?我正在使用testng6.8,但我仍然看到相同的行为。您确定正在调用您的xml吗?正在运行的测试是您在ur xml中指定的测试吗?是的,它们正在运行。我甚至使用了eclipse的testng插件来直接运行该套件。仍然没有不同的线程。@niharika_neo您如何证明testng实际上产生了更多线程?
<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>
<!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>
System.out.println(Thread.currentThread().getName());