Programing

AndroidJUnit4 및 ActivityTestRule을 단위 테스트 클래스로 가져올 수없는 이유는 무엇입니까?

crosscheck 2020. 11. 29. 09:53
반응형

AndroidJUnit4 및 ActivityTestRule을 단위 테스트 클래스로 가져올 수없는 이유는 무엇입니까?


일부 Android UI 테스트 프레임 워크 클래스를 가져 오는 데 문제가 있습니다. 문제가 무엇인지 파악할 수 없습니다.

이것은 내 수업입니다.

@RunWith(AndroidJUnit4.class)
@LargeTest
public class ExampleUnitTest {

@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule(MainActivity.class);

@Test
public void listGoesOverTheFold() {
    onView(withText("Hello world!")).check(matches(isDisplayed()));
  }
}

그러나 어떤 이유로 '기호 ActivityTestRule을 찾을 수 없음'및 '기호 AndroidJUnit4를 찾을 수 없음'이라는 오류가 발생합니다. 가져 오려고했지만 찾을 수 없습니다.

build.gradle의 종속성은 다음과 같이 설정됩니다.

compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
androidTestCompile 'com.android.support:support-annotations:23.4.0'

androidTestCompile 'com.android.support.test:runner:0.4'
androidTestCompile 'com.android.support.test:rules:0.4'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'

그래서 나는 모든 의존성을 설정했다고 생각합니다-나는 많은 것을 시도했지만 운이 없었습니다.

누구나 아이디어가 있습니까?


Android에서 설정할 수있는 두 가지 유형의 테스트가 있습니다.

단위 테스트

  • 이는 JVM에서 직접 실행되며 Android 프레임 워크 클래스에 대한 액세스 권한이 없습니다.
  • test/java패키지에 보관됩니다.
  • 명령을 사용하여 build.gradle 파일에 종속성을 추가해야합니다. testCompile
  • 일반적으로 이러한 테스트에는 Mockito, Robolectric 및 JUnit을 사용합니다.

계측 테스트

  • Android 에뮬레이터에서 실행되며 모든 Android 클래스에 대한 전체 액세스 권한이 있습니다.
  • androidTest/java패키지에 보관됩니다.
  • build.gradle에 종속성을 추가해야합니다. androidTestCompile
  • 일반적으로 이러한 테스트에 Espresso 및 JUnit을 사용합니다.

내가 말할 수있는 것은 Espresso로 계측 테스트를 작성하려고하지만 test/java단위 테스트 용 패키지에 테스트를 포함하고 있다고 말할 수 있습니다 . 이 경우 테스트 클래스를 androidTest/java패키지 로 이동해야 합니다.


최신 버전에 다음을 추가하십시오.

androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'

첨가:

androidTestImplementation 'com.android.support.test:rules:1.0.2'

문제를 해결하지만 프로젝트를 gradle 파일과 동기화하는 것을 잊지 마십시오. 그래야만 변경 사항이 적용됩니다.


AndroidX로 마이그레이션 한 경우 다음을 사용하십시오.

androidTestImplementation 'androidx.test:rules:1.1.1'
androidTestImplementation 'androidx.test:runner:1.1.1'

이 추가 종속성 필요

 testCompile 'com.android.support.test:rules:0.5'
 testCompile 'com.android.support.test:runner:0.5'

종속성을 추가하십시오.

androidTestCompile 'com.android.support.test:rules:0.5'
androidTestCompile 'com.android.support.test:runner:0.5'

참고URL : https://stackoverflow.com/questions/37821148/why-cannot-i-import-androidjunit4-and-activitytestrule-into-my-unit-test-class

반응형