web-dev-qa-db-ja.com

Android Studio Espressoテストエラー:空のテストスイート

Android Studio:Test running failed:Unable to find instrumentation info for:ComponentInfo {.test/Android.support.test.runner。 AndroidJUnitRunner}

私のテストクラスはandroidTest/Javaディレクトリにあり、コンストラクタがあります。私のbuild.gradleも正しいです。どんな助けでもありがたいです。

テストクラス

@RunWith(AndroidJUnit4.class)
@LargeTest
public class AndroidUITests extends ActivityInstrumentationTestCase2<UserActivity>{

    private UserActivity userActivity;

    public AndroidUITests() {
        super(UserActivity.class);
    }


    @Before
    public void setUp() throws Exception {
        super.setUp();
        injectInstrumentation(InstrumentationRegistry.getInstrumentation());
        userActivity = getActivity();
    }

    @Test
    public void testPhoneIconIsDisplayed() {
        // When the phone_icon view is available,
        // check that it is displayed.
        onView(ViewMatchers.withId(R.id.groupCreate)).perform(click())
                .check(matches(withText("Enter a name")));
    }
}

app/build.gradle:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        testInstrumentationRunner
        "Android.support.test.runner.AndroidJUnitRunner"
    }

    packagingOptions {
        exclude 'LICENSE.txt'
    }
}

dependencies {
    androidTestCompile 'com.Android.support.test.espresso:espresso-core:2.0'
    androidTestCompile 'com.Android.support.test:testing-support-lib:0.1'
}
16
Isaac

テスト「構成の編集」を更新し、AndroidJUnitRunnerをインストルメンテーションランナーとして含める必要があります。

enter image description here

私はこのビデオで解決策を見つけました: https://youtu.be/TGU0B4qRlHY?t=9m36s

更新

@loeschgの提案を追加する:テストを実行する前に、logcatログをチェックして、何かが問題(クラッシュ)を引き起こしていないことを確認してください。 @BeforeClassブロックの不正なコードにより、テストランナーが適切に設定されているにもかかわらず、Android Studioで "Empty Test Suite"メッセージが表示される可能性があります。

25
Juan Saravia

質問はすでに回答されていますが、将来の訪問者のために投稿する価値があると考えました。

テストを実行する前に、logcatログをチェックして、何かが問題(クラッシュ)を引き起こしていないことを確認してください。テストランナーを適切に設定したにもかかわらず、@BeforeClassブロックに不正なコードがあり、Android Studioに「Empty Test Suite」メッセージが表示されました。

27
loeschg

このようなエラーメッセージが表示された場合:

Class not found: "com.example.product.package.name.SomeSpecificTest" Empty test suite.

EspressoテストがAndroid Instrumented TestsRun/Debug Configurationsセクションに追加されているかどうかを確認する必要があります。

Android Studio 3.1.3Android JUnitセクションに誤って追加する場合があるようです。

次のようになっていることを確認してください: Run/Debug Configurations with Android Instrumented Tests and Android JUnit

また、この問題はDebug以外のビルドバリアントが選択されているときに発生することにも気付きました。

7
ViliusK

2018年にまだこれに悩む人がいるなら、ここに作業セットアップがあります:

build.gradle必須):

<...snip...>

Android {
    defaultConfig {
        <...snip...>
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        // ^^^ here it is (first)!
    }

<...snip...>

dependencies {
    <...snip...>

    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    // ^^^ all three required ^^^ (second)
}

計装テストでは(必須も):

import androidx.test.espresso.Espresso.onData
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.action.ViewActions.*
import androidx.test.espresso.assertion.ViewAssertions.*
import androidx.test.espresso.matcher.RootMatchers.*
import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.LargeTest
import org.hamcrest.Matchers.*
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(AndroidJUnit4::class)
@LargeTest
class ApplicationTest {
    @Test
    fun thruStillThrullyThrue() {
        // do interaction with some UI
        onView(withId(R.id.myButtonOnMyActivity)).perform(click())

        // assert expected result
        onView(withId(R.id.myTextViewOnMyActivity)).check(matches(isDisplayed()))
    }
}

// (third)
0
tosh

私の問題は、フィールド 'testInstrumentationRunner'がbuild.gradle(アプリ)で指定されていることでした。使用している場合は、androidxに変更します(androidx.test.runner.AndroidJUnitRunner)

誰かのお役に立てば幸いです。

0
Derwrecked

私はかなり確信していますAndroid.support.test.runner.AndroidJUnitRunnerはランナーライブラリによって提供されます。

  1. Android Support Repository をインストールします(これは既に行っています)
  2. 依存関係にランナーを追加する

このようになります

dependencies {
    ...
    androidTestCompile 'com.Android.support.test:runner:0.2'
}
0
Enrico