5

newbの質問を許してください-私の概念モデルはまだかなり不完全です...

mavenとsurefireを使用してコマンドラインからTestNGテストを再実行しようとしています。私のコマンドラインは次のようになります。

D:\workspaces\workspace01\aptest>mvn clean install surefire:test -Dtests=myTestNGSuite test

最終的に出力に含まれるものが含まれているため、明らかに私はそれを取得していません。

[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ aptest ---
[INFO] Skipping execution of surefire because it has already been run for this configuration

コマンドラインからTestNGスイートを再実行できるように構成をクリアするにはどうすればよいですか?コマンドラインからTestNGスイートを実行するためのより良い方法はありますか?

TIA、->アーロン

4

2 に答える 2

3

あなたが与えたコマンドに基づいて

mvn clean install surefire:test -Dtests=myTestNGSuite test

ところで:パラメータテストはtestという名前にする必要があります

これは、インストールライフサイクルを実行することを意味します。これは、次の手順を実行することを意味します。

  • 検証
  • 初期化、
  • 生成ソース、
  • プロセスソース、
  • 生成-リソース、
  • プロセスリソース、
  • コンパイル、
  • プロセスクラス、
  • generate-test-sources、
  • プロセス-テスト-ソース、
  • generate-test-resources、
  • プロセステストリソース、
  • テストコンパイル、
  • プロセステストクラス、
  • テスト、
  • 準備パッケージ、
  • パッケージ、
  • 統合前テスト、
  • 統合テスト、
  • 統合後テスト、
  • 確認、
  • インストール

このライフサイクル内でテストフェーズがすでに実行されていることがわかります...言い換えると、surefire:testも、次のようなライフサイクルを実行するテストも意味がありません。

  • 検証
  • 初期化、
  • 生成ソース、
  • プロセスソース、
  • 生成-リソース、
  • プロセスリソース、
  • コンパイル、
  • プロセスクラス、
  • generate-test-sources、
  • プロセス-テスト-ソース、
  • generate-test-resources、
  • プロセステストリソース、
  • テストコンパイル、
  • プロセステストクラス、
  • テスト、

したがって、TestNG内でスイートを実行するには、次のようにMavenを呼び出すだけで十分です。

mvn -Dtest=myTestNGSuite test

または、テストライフサイクルを実行したことがある場合は、これを次のように短縮できます。

mvn -Dtest=myTestNGSuite surefire:test

さらに、通常、JUnitでもTestNGでもテストスイートを使用しないでください。maven-surefire-pluginは正しい場所(src / test / java)内のユニットテストを自動的に認識します。したがって、テストスイートを作成する必要はありません。ところで、maven-surefire-pluginのより最新のバージョン(当面は2.13)を定義する必要があります。

于 2013-01-01T00:16:17.467 に答える
2

surefireプラグインのテスト目標は、テストフェーズで自動的に実行されるため、初めて実行するだけです。

 mvn clean install -Dtest=MyTestNGTest

その後、再実行する場合は、

mvn install -Dtest=MyTestNGTest

テストケースまたはコードの変更のみが再コンパイルされるように、また、surefireプラグインのテスト目標を呼び出さないように、私はクリーンゴールを呼び出していないことに注意してください。

于 2013-01-01T00:12:13.010 に答える