首页 文章

testng是否运行多线程?

提问于
浏览
1

我有一个java maven项目,我想用多线程测试 . 我在src / test中有testng.xml,maven surefire插件配置为使用它 . 就像这个页面一样:http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html

edit: added surefire pom entry

<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是否正在运行多线程?

edit: classes or methods

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

2 回答

  • 0

    我找到了答案,我没有给它足够的线程 . 由于我的项目有很多测试,因此testng不会为每个方法创建新的线程 . 我把它改为10个线程并修复了它 .

  • 0

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

相关问题