2013-06-27 1 views
0

코드 적용 범위에서 테스트 프로젝트를 실행하려고 할 때 IllegalAccessError가 발생하는 이유는 무엇입니까?Android 용 EMMA를 사용하여 단위 테스트를 실행할 때 IllegalAccessError가 발생합니다.

개미를 실행할 때 다음 오류가 발생합니다.

host:MyAppTest mach$ ant clean emma instrument install test 

[...] 

[echo] Running tests ... 
[exec] 
[exec] com.example.myapp.test.MyClassTest:. 
[exec] Error in testMyMethod: 
[exec] java.lang.ExceptionInInitializerError 
[exec]  at com.example.myapp.test.MyClassTest.testMyMethod(MyClassTest.java:10) 
[exec]  at java.lang.reflect.Method.invokeNative(Native Method) 
[exec]  at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) 
[exec]  at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) 
[exec]  at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) 
[exec]  at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584) 
[exec] Caused by: java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation 
[exec]  at com.example.myapp.MyClass.$VRi(MyClass.java) 
[exec]  at com.example.myapp.MyClass.<clinit>(MyClass.java) 
[exec]  ... 13 more 

내 앱

public class MyClass { 
    public boolean myMethod(int i) { 
     return true; 
    } 
} 

에서 클래스를 가지고있는 테스트 클래스 내 테스트 앱

나는 다음과 같은 매개 변수

내 두 개미 build.xml 파일을 만든
public class MyClassTest extends AndroidTestCase { 
    public void testMyMethod() { 
     MyClass a = new MyClass(); // <--- THIS MAKES THE TEST FAIL 
            // If I remove this line it runs 
            // successfully but does not test anything... 
    } 
} 

host:MyApp mach$ android update project --path $PWD --name MyApp --target android-16 --subprojects 

host:MyAppTest mach$ android update test-project --main ../MyApp --path ./ 

답변

0

발견 된 답변 r - 단위 테스트도 계측하려고했습니다.

그래서 여기에 성공적으로 프로젝트를 열고 속성 -> 자바 빌드 경로에 대해, 이클립스에서 코드 커버리지

을 단위 테스트를 구축하고지고의 짧은 버전이며, "라이브러리"-tab를 선택합니다. "외부 JAR 추가 ..."를 누르고 SDK의 emma.jar을 선택하십시오. ([...]/sdk/tools/lib/emma.jar)

"주문 및 내보내기"탭을 선택하고 다음을 선택하십시오. emma.jar을 내 보냅니다.

터미널을 열고 디렉토리를 테스트 할 프로젝트의 루트로 변경하십시오.

android update project --path $PWD --name [YOUR PROJECT NAME] --target android-17 --subprojects 

테스트 프로젝트를 만듭니다.

android create test-project -m ../ -n MyAppTest -p tests 

새로운 테스트 프로젝트에서 테스트 케이스를 작성

가의 계측 빌드를 구축 첫 테스트 할 시간이 프로젝트 - 투 - 수 시험 테스트를 구축하고 실행 다음과

ant clean instrument 
cd tests 
ant debug emma install test 

테스트 보고서/표지에 포함 된 보고서는

건배!

관련 문제