2017-03-10 13 views
3

私はgradleを使用してAndroid携帯電話でいくつかのテストを行っています。しかし、私は実行するテストを選択できるようにしたいと思います。テストではjUnit4とカテゴリを使用しています。gradleを使用して特定のjunit4カテゴリを実行する

これはテストが構築し、ジェンキンスから実行される方法である。

call gradle assembleDebug assembleDebugAndroidTest 
call gradle connectedDebugAndroidTest 

これはテストがどのように見えるかです:私は成功せず、次のことを試してみましたが、私のgradle.buildで

@Category(IncludeTest.class) 
@Test 
public void test_Test_06() throws Exception { 
    TestData.setUpTest("test_Test_06"); 
    Log.d("Test: Test 6 included"); 
} 

@Category(ExcludeTest.class) 
@Test 
public void test_Test_07() throws Exception { 
    TestData.setUpTest("test_Test_07"); 
    Log.d("Test: Test 7 excluded"); 
} 

test { 
    useJUnit { 
    includeCategories 'com.abc.def.IncludeTest' 
    excludeCategories 'com.abc.def.ExcludeTest' 
    } 
} 

次のように私の構造は次のとおりです。

Javaで
/someFolder/gradle.build 
/someFolder/app/src/android/java/ 

私はcom.abcという名前のパッケージを持っており、そのパッケージに別のパッケージがあり、デフIncludeTestExcludeTestインタフェースです。

gradle.buildにInclude/ExludeTestという別のパスを試しましたが、動作しません。すべてのテストが常に実行されます。

私はまた、タスクにincludeCategories/excludeCategoriesを入れてみて、タスクが実際に開始されたことを確認しました。しかし、まだすべてのテストが実行されました。 includeCategories/excludeCategoriesは何もしないようです。

何か基本的なことは間違っていますか?カテゴリを選択する他の方法はありますか?

答えて

1

さらに調査したところ、includeCategories/excludeCategoriesはAndroidで動作しないことが分かりました。

AndroidJUnitRunnerを使用すると、別の解決策が見つかりました。 Gradleでは、注釈のテストをフィルタリングすることができます。注釈を含めるには:

call gradle connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.annotation=com.abc.def.IncludeTest 

notAnnotation代わりを使用して注釈を排除する可能性もあります。

もちろん、OR/ANDの組み合わせで複数の注釈を使用する場合は構文があります。あなたが使用していない場合は、次の

もconnectedDebugAndroidTest可能です:

adb shell am instrument -w -e annotation com.android.foo.MyAnnotation com.android.foo/android.support.test.runner.AndroidJUnitRunner 

一部のマニュアル:https://developer.android.com/reference/android/support/test/runner/AndroidJUnitRunner.html

関連する問題