1

マルチスレッドを使用してテストしたいJavaMavenプロジェクトがあります。src / testにtestng.xmlがあり、mavensurefireプラグインがそれを使用するように構成されています。このページのように:http: //maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html

編集:surefirepomエントリを追加しました

<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>

私はsurefire2.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"を設定したので、メソッドごとに実行する必要があります。メソッドごとにできませんか?

4

2 に答える 2

0

私は答えを見つけました、私はそれに十分なスレッドを与えていませんでした。私のプロジェクトには多くのテストがあるので、testngはメソッドごとに新しいスレッドを作成しません。私はそれを10スレッドに変更し、それで修正しました。

于 2013-02-19T16:24:08.233 に答える
0

この場合、TestNGは並行して実行されません。スレッドでさまざまなブラウザを定義するには、ThreadLocalを定義する必要があります。ThreadLocalを使用し、さまざまなインスタンスでブラウザーを定義します。この場合、異なるブラウザIDを取得します。

于 2014-02-22T04:04:25.520 に答える