Programming

androidJUnit4.class는 더 이상 사용되지 않습니다 : androidx.test.ext.junit.runners.AndroidJUnit4를 사용하는 방법은 무엇입니까?

procodes 2020. 5. 18. 21:06
반응형

androidJUnit4.class는 더 이상 사용되지 않습니다 : androidx.test.ext.junit.runners.AndroidJUnit4를 사용하는 방법은 무엇입니까?


계측 테스트를 위해

@RunWith(AndroidJUnit4.class)

...에서

import androidx.test.runner.AndroidJUnit4;

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

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

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

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


AndroidJUnit4의 문서에 따르면 gradle 파일에는 다음 행이 포함되어야합니다.

androidTestImplementation 'androidx.test.ext:junit:1.1.1'

이것을 추가하면 모든 것이 나를 위해 일했습니다.

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


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

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

UI 테스트의 경우 :

androidTestImplementation 'androidx.test.ext : junit : 1.1.0'

단위 테스트의 경우 :

testImplementation 'androidx.test.ext : junit : 1.1.0'

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


나를 위해 다음 단계를 수행했습니다.
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");
    }
}

The thing that was bugging me was the fact that InstrumentationRegistery class was still deprecated. So i used InstrumentationRegistry.getInstrumentation().getTargetContext(); from androidx.test.platform.app.InstrumentationRegistry class.


I tried all given above until I went to the official Android site, and they suggested importing from androidx.test.ext.junit.runners.AndroidJUnit4 instead of androidx.test.runner.AndroidJUnit4. link


In my case changing androidTestImplementation to testImplementation helped. I did't know the difference before reading this android difference between testImplementation and androidTestImplementation in build.gradle


i got the same error in ExampleInstrumentedTest.java file after i tried to add my project to github. this option did not work for me File -> Invalidate Caches..., and select Invalidate and Restart

then i do this....this is worked for me

add this line in to build.gradle

androidTestImplementation 'androidx.test.ext:junit:1.1.1'


If you imported those AnroidX test libraries, synced and re-built the project, but the imported packages were still not resolved. Just remember how you upgraded your project to AndroidX, close Android Studio and remove the .idea folder and reopen your project again...

This worked for me !

참고URL : https://stackoverflow.com/questions/52776716/androidjunit4-class-is-deprecated-how-to-use-androidx-test-ext-junit-runners-an

반응형