2013-05-22 4 views
31

아직 규칙이 없지만 Android testing fundamentals 페이지에 표시된 내용이 다르기 때문에 Android Studio 용 테스트 디렉토리를 구성하는 방법은 무엇입니까?Android Studio에서 프로젝트 테스트 디렉토리를 구조화하려면 어떻게해야합니까?

특히, Android Studio에서 jUnit 테스트를 수행하는 방법에 대한 지침은 도움이 될 것입니다. 감사합니다.

또한 android 도구를 사용하면 Android Studio와 상황이 조금 다르기 때문에 지금은 도움이되지 않습니다.

업데이트 : 테스트 폴더를 설정하고 그것을 실행,하지만지고있어 모두가 시도

다음

Running tests 
Test running startedTest running failed: Unable to find instrumentation info for:ComponentInfo{<project-package-name>/android.test.InstrumentationTestRunner} 
Empty test suite. 

가 나는 또한 표준 AndroidManifest를 추가하려고했습니다. 거기에있는 테스트를위한 xml 파일.

답변

59

UPDATE

빌드 도구 19.1.0 빌드 플러그인 0.11.0 build.gradle 파일의 시작은 testPackageNametestApplicationId (도 여기서 packageName이어야로 변경해야 할 필요가 이름이 androidId으로 변경되었습니다.

빌드 플러그인 0.9.0 이상 instrumentTest 폴더의 이름이 androidTest으로 바뀝니다. 그것이 우리가 테스트에 필요한 전부입니다. 여기

는 0.11의 예입니다 + DSL

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.1.0" 

    defaultConfig { 
     minSdkVersion 16 
     targetSdkVersion 19 
     versionCode 1 
     versionName "1.0" 
     androidId "org.homelab.lab" 
     testApplicationId "org.homelab.lab.test" 
     testInstrumentationRunner "org.homelab.lab.test.Runner" 
    } 

    ... 
} 

개는 :. 빌드 파일이 testPackageNametestInstrumentationRunner의 정의를 구성하는 경우, 버전 0.5.0를 들어 그들에게

을 제거 - 0.8. +

Android 스터드 io는 Gradle SourceDir 원칙을 따르는 Gradle 플러그인 버전 0.5. +를 사용합니다.

Android Studio project structure

그것이 작동되도록하는 방법 : (1.7 문제를보고) 1.6
2.install 또는 업데이트 Gradle을을
1.update의 SDK 또는 Gradle을 래퍼
3.don't 사용을 고수 안드로이드 스튜디오 계측 작업을 실행하기위한, 테스트 및 주요 APK
5 Gradle을 명령을

gradle connectedCheck 

4.don't 사용 같은 패키지를 사용합니다.브라우저를

<project>/build/reports/instrumentTests/index.html 

둘점를 사용하여 결과를 확인 :
테스트 패키지와 기본 패키지가 동일한 경우 비어있는 TestSuite를 만들 수 있습니다. Gradle은 아무런 문제도보고하지 않지만 Class는 테스트를 거치지 않았기 때문에 결과는 오해의 소지가 있습니다.

편집 : 아래

이 악기 테스트가 필요한 구성 build.gradle의 일부입니다 0.9.0 이전 :

android { 
    compileSdkVersion 14 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 17 
     testPackageName "org.homelab.lab.test" 
     testInstrumentationRunner "org.homelab.lab.test.Runner" 
    } 

    ... 
} 

예제 프로젝트 https://github.com/swavkulinski/android-studio-instrumentation-test

+1

감사합니다. 필자는 안드로이드를 테스트하는 초심자이기 때문에 지금은 이클립스로 돌아갔다. 나중에 반복 할 때 Android Studio를 업데이트 할 때 Google에서 일을 더 쉽게 만들 것이라고 확신합니다 –

+0

예 미리보기입니다.JetGradle과 함께 IntelliJ 바닐라를 사용하여 동일한 작업을 훨씬 더 쉽게 수행 할 수 있습니다. 어떤 이유로 나는 안드로이드 스튜디오에서 JetGradle을 찾을 수 없습니다. – robotoaster

+0

@robotoaster : 테스트 위치를 지정하기 위해 build.gradle을 업데이트해야합니까? – dannyroa

0

내가 해결하는 또 다른 방법이 이유는 단지 실행 구성의 문제입니다.

프로젝트의 구성은 안드로이드 테스트하지만 안드로이드없는 응용 프로그램의 경우, 사용자의 실행 구성을 확인하고 당신은

"Running tests 
Test running startedTest running failed: Unable to find instrumentation info for:ComponentInfo{<project-package-name>/android.test.InstrumentationTestRunner} 
Empty test suite." 

그래서 안드로이드 테스트 구성을 삭제 직면하게 될 것이다 당신의 peoject에 대한 안드로이드 응용 프로그램 실행 구성을 추가 , 당신은 그것을 실행할 수 있습니다.

1

이제 Android Studio에서 instrumentDirectory에 테스트를 배치하는 규칙에 따라 instrumentTests를 설정할 수 있습니다. Gradle을 단지 내 경우 Robotium 당신이 가지고있는 depencies, 알고해야합니다 :

Android Studio Screenshot

dependencies { 
    androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.0.+' 
} 

테스트는 당신이 GUI에 표시되는 결과가됩니다 완료, 그래서 당신은하지 않는 경우 전혀 명령 줄을 사용해야합니다! JUnit 테스트 위의 모듈을 마우스 오른쪽 단추로 클릭하여 모든 JUnit 테스트를 실행할 수도 있습니다.

+1

이것은 움직이는 표적이며, 당신은 gradle 및 android gradle plugin 버전과 관련하여 "현재"의 의미를 추가 할 수 있습니다. –

+0

정확히, 이제 폴더 이름은 androidTest입니다. –

1

이 문제도 발생했습니다. 안드로이드 스튜디오는 단지 구축하고 장치에 기본 응용 프로그램 APK를 설치하고 다음과 같은 메시지와 함께 테스트를 실패했습니다 : 대한 계측 정보를 찾을 수 없습니다 : 테스트 startedTest 실패 실행 실행

ComponentInfo을 {com.example.app.test /android.test.InstrumentationTestRunner}

빈 테스트 제품군.

그러나, connectedCheck Gradle 타겟을 실행하면 2 개의 APK가 생성되어 설치되었으며 계측 테스트가 성공적으로 실행되었습니다. installDebugAndroidTest 타겟을 실행하여 Gradle에 계측 APK 만 조립하고 설치하도록 요청할 수 있습니다. 이 타겟을 실행 한 후에 AndroidStudio는 계측 테스트를 잘 실행할 수 있었으며 디버거를 부착 할 수있었습니다! 테스트 자체를 변경할 때마다 계측기 APK를 새로 고쳐야하지만 그렇지 않은 경우는 필요하지 않습니다. 장치에 설치

계측 된 APK를 실행하여 나열 할 수 있습니다 : 응답에 대한 adb shell pm list instrumentation

관련 문제