androidJUnit4.class는 사용되지 않습니다 : androidx.test.ext.junit.runners.AndroidJUnit4를 사용하는 방법은 무엇입니까? AndroidJUnit4에서 import androidx.test.ext.junit.runners.AndroidJUnit4 그러나 AndroidJUnit4명명

계측 테스트를 위해

@RunWith(AndroidJUnit4.class)

…에서

import androidx.test.runner.AndroidJUnit4;

내 테스트 사례를 확립하기 위해. 사용할 수있는 힌트되지 않는 것으로 이제이 라인이 표시됩니다 AndroidJUnit4에서

import androidx.test.ext.junit.runners.AndroidJUnit4

그러나 AndroidJUnit4명명 된 패키지에서 가져 오려고 하면 오류가 발생 ext하여 해결할 수 없습니다.

이 문제를 해결하기 위해 gradle에 어떤 패키지를 포함시켜야하는지 알고 있습니까?



답변

에 따르면 AndroidJUnit4에 대한 설명서 ,

  1. gradle 파일에는 다음 줄이 포함되어야합니다. androidTestImplementation 'androidx.test.ext:junit:1.1.1'

  2. 테스트 클래스를 AndroidJUnit4ClassRunner에서AndroidJUnit4

여전히 작동하지 않으면 프로젝트를 정리하거나 다시 빌드하십시오. 또한 Google의 maven 저장소 에서 현재 버전을 직접 확인할 수 있습니다


답변

@MarcelGangwisch의 솔루션을 시도했지만 빌드에서 리소스를 찾을 수 없으며 프로젝트를 정리 / 재 구축해도 여전히 작동하지 않는다고 말하는 데 실패하면 다음을 시도하십시오.

의존성을 변경 한 gradle 파일에서 필요한 유형으로 추가해야합니다.

UI 테스트의 경우 :

androidTestImplementation ‘androidx.test.ext : junit : 1.1.0’

단위 테스트의 경우 :

testImplementation ‘androidx.test.ext : junit : 1.1.0’

내 경우에는 둘 다 추가하고 이제는 작동합니다.


답변

해결책

  1. 이 줄을 build.gradle에 추가하십시오. androidTestImplementation 'androidx.test.ext:junit:1.1.1'

  2. 변경 AndroidJUnit4AndroidJUnit4ClassRunner테스트 클래스에

경고

같은 오류가 발생했지만 다음 해결책이 실패했습니다.

File-> Invalidate Caches …를 선택하고 Invalidate and Restart를 선택하십시오.


답변

나를 위해 다음 단계를 수행했습니다.
1. androidx 라이브러리를 여기에 게시 된 라이브러리로 바꿉니다 . 내 최종 app/build.gradle결과는 다음과 같습니다.

android {
    ...
    defaultConfig {
        ...
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

    }
    ...
}

dependencies {
    ...
    testImplementation 'junit:junit:4.12'

    // Core library
    androidTestImplementation 'androidx.test:core:1.2.0'

    // AndroidJUnitRunner and JUnit Rules
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test:rules:1.2.0'

    // Assertions
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.ext:truth:1.2.0'
    androidTestImplementation 'com.google.truth:truth:0.42'

    // Espresso dependencies
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

}

그런 다음 ExampleInstrumentTest.java클래스 에서 가져온 모듈을 수동으로 최신 클래스 로 교체했습니다 .

import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.rule.ActivityTestRule;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4ClassRunner.class)
public class ExampleInstrumentedTest {
    ...
    @Rule
    public final ActivityTestRule<MainActivity> main = new ActivityTestRule<>(MainActivity.class, true);

    @Before
    public void init() {
        ...
    }
    @Test
    public void listCount() {
        ...
    }

    @Test
    public void useAppContext() {
        Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();

        Assert.assertEquals("in.curioustools.aad_x_testing2", appContext.getPackageName());
        System.out.println("useAppContext : Test Ran");
    }
}

나를 괴롭힌 것은 InstrumentationRegistery클래스가 여전히 사용되지 않는다는 사실 이었습니다. 그래서 나는 수업 InstrumentationRegistry.getInstrumentation().getTargetContext();에서 사용 했습니다 androidx.test.platform.app.InstrumentationRegistry.


답변

공식 안드로이드 사이트에 갈 때까지 위의 모든 것을 시도했지만 androidx.test.ext.junit.runners.AndroidJUnit4대신 에서 가져 오기를 제안했습니다 androidx.test.runner.AndroidJUnit4. 링크


답변

제 경우에는 도움으로 바뀌 androidTestImplementationtestImplementation습니다. build.gradle에서 testImplementation과 androidTestImplementation 의이 안드로이드 차이점을 읽기 전에 차이점을 몰랐습니다.


답변

해당 AnroidX 테스트 라이브러리를 가져온 경우 프로젝트를 동기화하고 다시 빌드했지만 가져온 패키지는 여전히 해결되지 않았습니다. 프로젝트를 AndroidX로 업그레이드 한 방법을 기억하고 Android Studio를 .idea닫은 후 폴더를 제거하고 프로젝트를 다시여십시오 .

이것은 나를 위해 일했다!