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'
}
テスト「構成の編集」を更新し、AndroidJUnitRunnerをインストルメンテーションランナーとして含める必要があります。
私はこのビデオで解決策を見つけました: https://youtu.be/TGU0B4qRlHY?t=9m36s
更新
@loeschgの提案を追加する:テストを実行する前に、logcatログをチェックして、何かが問題(クラッシュ)を引き起こしていないことを確認してください。 @BeforeClassブロックの不正なコードにより、テストランナーが適切に設定されているにもかかわらず、Android Studioで "Empty Test Suite"メッセージが表示される可能性があります。
質問はすでに回答されていますが、将来の訪問者のために投稿する価値があると考えました。
テストを実行する前に、logcatログをチェックして、何かが問題(クラッシュ)を引き起こしていないことを確認してください。テストランナーを適切に設定したにもかかわらず、@BeforeClass
ブロックに不正なコードがあり、Android Studioに「Empty Test Suite」メッセージが表示されました。
このようなエラーメッセージが表示された場合:
Class not found: "com.example.product.package.name.SomeSpecificTest" Empty test suite.
EspressoテストがAndroid Instrumented Tests
のRun/Debug Configurations
セクションに追加されているかどうかを確認する必要があります。
Android Studio 3.1.3がAndroid JUnit
セクションに誤って追加する場合があるようです。
また、この問題はDebug
以外のビルドバリアントが選択されているときに発生することにも気付きました。
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)
私の問題は、フィールド 'testInstrumentationRunner'がbuild.gradle(アプリ)で指定されていることでした。使用している場合は、androidxに変更します(androidx.test.runner.AndroidJUnitRunner)
誰かのお役に立てば幸いです。
私はかなり確信していますAndroid.support.test.runner.AndroidJUnitRunner
はランナーライブラリによって提供されます。
このようになります
dependencies {
...
androidTestCompile 'com.Android.support.test:runner:0.2'
}