4

netbeans 6.9.1 に maven プロジェクトがあり、junit 4.4 テスト クラスがあります。

netbeans コンテキスト メニューで、プロジェクトを「クリーンアップしてビルド」でき、出力で、テスト クラスが確実に検出されて実行されたことがわかります。

コンテキストメニューの「デバッグテストファイル」から選択すると、出力は次のようになります

--- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ < project-name> --- 2 つのソース ファイルを < project-path>\target\test-classes にコンパイルします

--- maven-surefire-plugin:2.7.2:test (default-cli) @ < project-name> --- Surefire レポート ディレクトリ: < project-path>\target\surefire-reports


テスト


実行するテストはありません。

これまでに確認したこと:

  • ビルド プロジェクトはテスト ファイルを見つけますが、それでも < testSourceDirectory> はそこにあり、正しいです

  • junit は 1 つだけです - *.pom の依存関係には 4.4

  • クラスファイル自体は次のようになります

    junit.framework.TestCase をインポートします。

    org.junit.Test をインポートします。

    public class SomeTest extends TestCase { @Test public void testFoo() throws Exception { / --- /} }

  • デバッグ用の netbeans アクションの説明は次のようになります

    実行目標: test-compile Surefire:test

    set properties : jpda.listen=true maven.surefire.debug=-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} jpda.stopclass=${packageClassName} failIfNoTests=false // これは私の追加、まだ失敗していない forkMode=once test=${className}

  • プロジェクトの *.po ファイルのどこにも確実なプラグイン セクションはありません

4

1 に答える 1

3

これは実際にはNetBeansの問題ではありません。

JUnit 3テストを定義しましたが、JUnit4ランナーでそれらを実行しようとしています。Surefireは、次のルールを使用して、使用するランナーを決定します(maven-surefire-plugin Junitから)

if the JUnit version in the project >= 4.7 and the parallel attribute has ANY value
    use junit47 provider
if JUnit >= 4.0 is present
    use junit4 provider
else
    use junit3.8.1

プロジェクトにjunit4.4があるので、junit4を使用しています。テストクラスは2つしかないため、最良のオプションは、テストをJUnit4テストに再定義することです。拡張TestCaseを削除し、@ Test / @ Before / @ Afterアノテーションをテストに追加し、JUnit3のものを完全に削除します。

移行の詳細については、テストをJUnit3からJUnit4に自動的に移行するための最良の方法を参照してください。

于 2011-11-30T12:21:19.390 に答える