programing tip

Android 스튜디오는 기존 단위 테스트를 가져옵니다.“구문 정보를 찾을 수 없습니다.”

itbloger 2020. 12. 4. 07:57
반응형

Android 스튜디오는 기존 단위 테스트를 가져옵니다.“구문 정보를 찾을 수 없습니다.”


그래서 저는 Android Studio를 시도하고 Eclipse에서 작동하는 프로젝트를 테스트하고 있습니다. 모든 것을 컴파일하고 응용 프로그램이 정상적으로 시작되지만 단위 테스트를 시작하고 작동 할 수 없습니다. 결국 내 응용 프로그램 lib 폴더를 종속성으로 추가하여 컴파일했지만 테스트를 실행할 때 마다이 오류가 발생하기 때문에 실행 구성이 옳지 않다고 생각합니다.

Installing <packagename>
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/<packagename>"
pkg: /data/local/tmp/<packagename>
Success


Running tests
Test running started
Test running failed: Unable to find instrumentation info for: ComponentInfo{<packagename>/android.test.InstrumentationTestRunner}
Empty test suite.

편집 : 처음 에이 질문을 게시 한 이후로 모든 새로운 도착에게 Android Studio의 상태가 많이 변경되었지만 많은 도움이되는 사람들 이이 오류에 대한 특정 솔루션을 계속 게시했습니다. 활성별로 정렬하고 최신 답변을 먼저 확인하는 것이 좋습니다.


다음 build.gradle과 같이 정의 된 testInstrumentationRunner가있는 경우 :

android {
    defaultConfig {
        testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"

실행 구성 창에서 테스트를 위해 Android Studio / IntelliJ 실행 구성에서 정확히 동일한 '특정 계측 실행기'를 사용하는지 확인하세요.


제 경우 해결책은 다음과 같습니다.

  • 보기> 도구 창> 변형 빌드
  • * 디버그 변형 선택

설명 및 해결책

이 오류 " Unable to find instrumentation "은 테스트 응용 프로그램의 매니페스트에 선언 된 targetPackage가 테스트중인 응용 프로그램의 매니페스트에 선언 된 패키지와 다른 경우 나타납니다.

  • 테스트중인 애플리케이션 :

    <manifest package="com.example.appbeingtested" … >
    
  • 시험 적용 :

    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.example.appbeingtested" … />
    

이 문제를 변경하여 해결했습니다.

android.test.InstrumentationTestRunner 

으로

com.android.test.runner.MultiDexTestRunner

EditConfigurations-> Specific Instrumentation Runner (선택 사항) 탭에서.

내 앱이 MultiDex를 사용하고 있기 때문에 테스트 러너도 MultiDexTestRunner로 변경해야합니다.

최신 정보:

@dan 주석으로 대신 InstrumentationTestRunner사용되지 않습니다 AndroidJUnitRunner.


제 경우에는 실행 / 디버그 구성 이 잘못되었습니다.

하나의 솔루션 :

  1. 실행 / 디버그 구성으로 이동

    실행-> 구성 편집 ...

  2. 테스트 클래스에 대한 Android 테스트 설정

  3. 왼쪽에서 Android 테스트 구성을 선택
    하거나 더하기 아이콘으로 새 구성을 만들고 이름을 ClassName Test 와 같이 지정합니다.

  4. 테스트 클래스가 포함 된 모듈을 선택하십시오. 가장 간단한 경우 테스트 클래스는 앱 모듈에 있으므로 app을 선택하십시오 .

  5. 다음 행에서 테스트 구성을 선택하십시오. 나는 사용한다:

    • Class : 한 클래스의 모든 테스트를 실행합니다.
  6. 테스트 클래스 선택

  7. 마지막으로 대상 장치를 구성하고 확인을 선택하십시오.


이것은 AndroidStudio 버전 2.3 미만에서만 작동합니다.

제 경우에는 잘못된 계측 러너가 선택되었습니다.

테스트의 실행 / 디버그 구성에서 계측 실행기를 지정하여이 문제를 해결했습니다 (아래 참조). 목록에서 러너를 선택할 수 있습니다.1]

Run / Debug Configurations : Run-> Edit Configurations ...를 찾습니다 .


@Iuliia Ashomok과 같은 문제가 있으며 인터넷에서 모든 것을 시도했습니다.

여전히 운이 없습니다.

2 일 동안 조사한 결과 휴대폰에서 문제가 발생한 것으로 확인되었습니다. .V.

나는 원래 Xiaomi Mi4i를 테스트 장치 (루팅)로 사용하고 테스트를 실행할 수 없습니다. 물론 아래 오류가 있습니다.

Test running failed: Unable to find instrumentation info for: ComponentInfo{<packagename>/android.test.InstrumentationTestRunner}

그러나 Sony Xperia Z3 (루트 없음)을 사용하면 모든 것이 잘 작동합니다.


프로젝트 구조가 좋지 않은 경우 솔기가 있습니다.

  1. AndroidManifest.xml을 열고 확인하십시오.

    <instrumentation android:name="android.test.InstrumentationTestRunner"
                         android:targetPackage="com.example.YourClass"
                         android:label="Tests for com.example.YourClass"/>
    

아니오 인 경우 다음을 수행하십시오.

  1. Reorganize your directory structure to the following one: (this is the recomendation from official source)
        MyProject/
              AndroidManifest.xml
              res/
                  ... (resources for main application)
              src/
                  ... (source code for main application) ...
              tests/
                  AndroidManifest.xml
                  res/
                      ... (resources for tests)
                  src/
                      ... (source code for tests)
  1. You see that you need to have inner tests module.
    For creating it in Idea IDE do next File -> New Module -> Test Module. After creating you can see one new AndroidManifest.xml. And it has instrumentation declaration inside.

I once got this error. I use the sdk tools in CLI mode. And the error happened when i launch 'ant test' in the test project. I later notice that I didn't even build and install the test project before ! (with 'ant debug install') So you should have try to check your running configuration to see if the test project got effectively build before running the test. For the other case, Android Studio use Gradle. I don't know it well but try to check the Gradle settings for the project or the Gradle settings file.


For me the problem was having this dependency:

debugCompile 'com.android.support.test:rules:0.2'

After I removed it my tests were found and run again.

Note that I didn't get the "Unable to find instrumentation" message but a "No tests found" message.


It turned out to be a delay problem. It fixed automatically after I waited a while reading the Internet solutions. I recompiled the code, and it worked.


Since none of these answers helped me, I wanted to share my solution for anyone who is as desperate as I was. :)

Because of the testing libraries that I was using, I needed to enable multidex support by adding multiDexEnabled true to my Gradle build. I'm not sure I had multidex support fully implemented to begin with (the proper way of doing it has changed since I last implemented it) but ultimately, I didn't end up needing it and removing that line from my build fixed the error. My team at work has had a few testing issues related to enabling multidex support… in typical Android style.


In my case in same classes some test cases were picking correct test runner ( android.support.test.runner.AndroidJUnitRunner ) which was defined in build.gradle, and some test cases were picking up android.test.InstrumentationTestRunner, which was not defined at least in Manifest or build.gradle or edit configuration. Ideally it should have been resolved by Sync Project with Gralde option, though it didn't work.

At last I found wrong test runner defined against a method in .idea/workspace.xml, I changed it manually, and issue got resolved.

Generally we are not supposed to edit this Android Studio generated file, but for me it did worked as last option.


In my case, the issue was in device too. Other devices were working fine. Simple uninstall and reinstall fixed it.


This answer is going to explain the history issues and summarise all related settings.

Basically there are 3 possible places for instrumentation test runner configurations.

  1. In EditConfigurations -> General tab -> Specific Instrumentation Runner (optional)
    This is existing in Android Studio 2.2 and version before only, in latest version, it is removed already.

  2. In manifest file, the test runner is configured as below.

    < instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
           android:targetPackage="com.mytestapp.test"/>

Since "android.test.InstrumentationTestRunner" is deprecated in API level 24, this setting is also not necessary already, as long as you configure the runner in gradle file.
If you want to keep this setting, please make sure the runner name should match to the one you set in the gradle file, otherwise you will got this error also.

  1. gradle 파일에서.
    위의 Android Studio v2.3을 사용하는 경우 유일하게 권장되는 방법입니다.
    android {
    .......
        defaultConfig {  
            .......  
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"  
        }   
    }

참고 URL : https://stackoverflow.com/questions/16591504/android-studio-import-existing-unit-tests-unable-to-find-instrumentation-info

반응형