2012-01-20 3 views
0

android SDK와 함께 제공되는 샘플 코드에 대한 샘플 유닛 테스트를 실행하려고합니다. 일부 테스트는 표준 단위 테스트로 실행되지만 문제는 없습니다. com.example.android.apis.view.Focus2AndroidTest와 같은 다른 테스트에서는 android 클래스를 사용하므로 에뮬레이터에서 실행해야하므로 문제가 발생합니다.IntelliJ를 사용하여 에뮬레이터에서 안드로이드 테스트를 어떻게 실행합니까?

내 에뮬레이터에서 응용 프로그램을 정상적으로 실행할 수 있습니다. 테스트를 실행하면 에뮬레이터가 시작된 다음 에뮬레이터가 시작됩니다. 테스트는 절대로 실행되지 않습니다. IntelliJ의 출력 창에 표시된 내용은 모두

Waiting for device. 
/Users/rfzabick/android-sdk-mac_x86/tools/emulator -avd MyAvd0 -netspeed full -netdelay none 
Device connected: emulator-5554 

무엇이 잘못 되었나요?

EDIT : @ CrazyCoder의 조언을 듣고 안드로이드 4.0.3 (API 15)으로 전환했습니다. 여기에 내가 가진 무엇 : 테스트

Waiting for device. 
/Users/rfzabick/android-sdk-mac_x86/tools/emulator -avd android4.0.3--api15 -netspeed full -netdelay none -wipe-data -no-boot-anim 
Device connected: emulator-5554 
Device is online: emulator-5554 
Target device: emulator-5554 (android4.0.3--api15) 
Uploading file 
    local path: /Users/rfzabick/IdeaProjects/ApiDemos/out/production/Tests/Tests.apk 
    remote path: /data/local/tmp/com.example.android.apis.tests 
Installing com.example.android.apis.tests 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.android.apis.tests" 
Device is not ready. Waiting for 20 sec. 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.android.apis.tests" 
Device is not ready. Waiting for 20 sec. 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.android.apis.tests" 
Device disconnected: emulator-5554 
pkg: /data/local/tmp/com.example.android.apis.tests 


Running tests 
Test running startedTest running failed: com.android.ddmlib.AdbCommandRejectedException: device not found 
Empty test suite. 

내가 로그 캣에서 볼 수있는 유일한 관련된 것은 명령에서,

01-21 16:36:22.047: WARN/ActivityManager(91): No content provider found for permission revoke: file:///data/local/tmp/com.example.android.apis.tests 

답변

2

에뮬레이터 또는 USB 장치에서 일반 앱을 실행할 수 있습니까? 새 에뮬레이터 장치를 만들어 도움이되는지 확인하십시오.

내가 Windows에서 IDEA 11.0.1, 4.0.3 안드로이드 플랫폼을 시도하고 그것을 잘 작동합니다 :

Waiting for device. 
Target device: emulator-5554 (ICS) 
Uploading file 
    local path: D:\dev\android-sdk-windows\samples\android-15\ApiDemos\out\production\Tests\Tests.apk 
    remote path: /data/local/tmp/com.example.android.apis.tests 
Installing com.example.android.apis.tests 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.android.apis.tests" 
pkg: /data/local/tmp/com.example.android.apis.tests 
Success 


Running tests 
Test running startedFinish 

또한 adb kill-server와 ADB를 다시 시작하고 AVD에서 수동으로 에뮬레이터를 시작하려고 할 수 있습니다 매니저.

에뮬레이터에 사전 설치된 ApiDemos 응용 프로그램이 없거나 서명이 일치하지 않는지 확인하십시오. 기존 ApiDemos를 제거한 다음 IntelliJ IDEA에서 ApiDemos를 배포하고 실행 한 다음 테스트 구성을 다시 실행하십시오.


UPDATE : 우리는 몇 가지 조사를했고, 문제의 원인을 발견했다. 기본적으로 IntelliJ IDEA는 테스트 모듈 내의 응용 프로그램 모듈에 대한 종속성 범위를 컴파일으로 설정하여 모든 프로덕션 및 테스트 클래스가 단일 Test.apk로 컴파일되도록합니다.

대신 범위를 으로 설정하고을 제공해야합니다. 다음 업데이트에서 수정 해 드리겠습니다.

Provided scope

이 프로젝트를 다시 빌드하고 다시 테스트를 실행, 2 개 별도의 APK 파일을 배포 할이 시간, 주요 응용 프로그램과 하나 : 스크린 샷과 같이 현재 수동으로 수정해야 시험에 대한 두 번째는, 다음 테스트가 실행됩니다 : 에뮬레이터에서 단위 테스트를 실행

Waiting for device. 
Target device: emulator-5554 (ICS) 
Uploading file 
    local path: D:\dev\android-sdk-windows\samples\android-15\ApiDemos\out\production\Tests\Tests.apk 
    remote path: /data/local/tmp/com.example.android.apis.tests 
Installing com.example.android.apis.tests 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.android.apis.tests" 
pkg: /data/local/tmp/com.example.android.apis.tests 
Success 


Uploading file 
    local path: D:\dev\android-sdk-windows\samples\android-15\ApiDemos\out\production\ApiDemos\ApiDemos.apk 
    remote path: /data/local/tmp/com.example.android.apis 
Installing com.example.android.apis 
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.example.android.apis" 
pkg: /data/local/tmp/com.example.android.apis 
Success 


Running tests 
Test running startedFinish 
+0

문제없이 에뮬레이터에서 응용 프로그램을 실행할 수 있습니다. 내가 할 수없는 단위 테스트입니다. –

+0

logcat 패널에 관련된 오류가 있습니까? 새로운 에뮬레이터 인스턴스를 사용하고 ApiDemos 응용 프로그램을 다시 설치 했습니까? 4.0.3 (15) 플랫폼을 사용해 보셨습니까? – CrazyCoder

+0

나는 그것을 시도하고 위의 결과를 추가했습니다. 불운. 시도 할 다른 것들? –

0

당신은 개미에서 계측을 실행할 수있다 ... 4:34 PM에 시작 스크립트의 줄. 후자를 선호하는 경우이 post이 도움이 될 수 있습니다.

-1

가 실용적이지 (기본적으로 너무 오래 소요). 그리고 안드로이드 항아리는 컴파일에만 유용하기 때문에, 단위 테스트로 실행하는 것은 불가능합니다.여기

https://github.com/ko5tik/andject/blob/master/src/test/java/de/pribluda/android/andject/ViewInjectionTest.java

내가 파생 된 안드로이드 활동에 대한 내 수업을 테스트하고가있다 : 좋은 대안 고급 조롱하는 프레임 워크를 사용하는 것입니다 참조 예를

을 (나는 개인적으로 jMockit, 을 선호하지만, 다른있다) 수퍼 클래스 메소드 (이 위치에서 Maven, Eclipse 또는 IDEA에서 실행 됨)

+0

나는 내 시험에서 물건을 조롱 할 수 있음을 안다. 그러나 안드로이드 SDK와 함께 제공되는 샘플 앱은 에뮬레이터에서 실행해야하는 단위 테스트와 함께 제공됩니다. 확실히 이러한 테스트를 실행할 수 있습니다. –

+0

x86 바이너리와 AVD, HAXM (Mac) 및 GPU가 활성화 된 x86 기반 컴퓨터에서 에뮬레이터가 실제 장치보다 빠를 수 있으며 "PC"에 여러 가지 API 수준의 테스트를 쉽고 자체적으로 수행 할 수 있습니다. 실제 장치에서의 테스트에 자신을 한정하지 마십시오. - 나쁜 조언. –

+0

@ ConstantinPribluda 너무 오래 걸린다는 것이 무엇을 의미합니까? 나는 리눅스 머신을 가지고 있으며 최신 안드로이드 에뮬레이터는 매우 빠릅니다. –

관련 문제