2017-12-13 17 views
0

私はテストコードでJARを作成し、別のプロジェクトからテストを実行する予定です。JAR依存関係からRunnningテスト

以下は実装しようとしているアプローチです。

プロジェクトB:

configurations { testApi } 
task testJar .... 
artifacts { testApi testJar } 

プロジェクトA:

dependencies { 
    testRuntime "xx.xxx.xxx.projectName", configuration: "integtest"; 
} 

テストは、このアプローチを実行していないことのようです。問題になる可能性のあるアイデアは何ですか?より良いアプローチは?

+0

もう少し詳しく説明してください。 g。何が "実行中ではない"何のエラーが出るのですか? – Vampire

+0

'gradle test'を実行すると、テストクラスはjarファイルから認識されません。しかし、ビルドが正常に完了しました。 – AvenashKrish

答えて

0

のGradleだけjavaプラグインでtestタスクのproject.sourceSets.test.output.classesDirsあるそれぞれのTest型タスクのtestClassesDirsプロパティを介して設定ディレクトリにテストクラスを探します。依存関係のJARファイルからテストを実行することはサポートされていません。

JARファイルを抽出し、抽出したディレクトリをこのプロパティに追加する必要があります。私は次のようなものがうまくいくと思いますが、私はそれをテストしませんでした:

configurations { 
    externalTests 
} 
dependencies { 
    externalTests "xx.xxx.xxx.projectName", configuration: "integtest" 
    testRuntime "xx.xxx.xxx.projectName", configuration: "integtest" 
} 
test { 
    // if only one dependency in externalTests you can use the simpler, it will fail if there are multiple dependencies 
    testClassesDirs += zipTree(configurations.externalTests.singleFile) 
    // if multiple dependencies in externalTests you need to use 
    testClassesDirs += configurations.externalTests.files.collect { zipTree it }.sum() 
} 
+0

Thanks @ Vampire、上記のアプローチを試したときに 'initializationError'' java.lang.ClassNotFoundException'が発生しました。クラスを認識していないと思います。何か案は?私はJARを解凍し、 'testClassesDir = files(" $ {buildDir}/integTest/classes/java ")'を設定しようとしました。同じエラーが発生しました。 – AvenashKrish

+0

それからクラスパスにも元のようにそれを置く、私はそれに応じて私の答えを更新しました。 – Vampire

+0

このように思われます。 JARから抽出​​されたファイルを使用することを示唆していますが、 'testClassesDir = files(" $ {buildDir}/integTest/classes/java ")'のように使用しようとしています。 – AvenashKrish

関連する問題