为什么在尝试使用代码覆盖率运行测试项目时会出现IllegalAccessError?
运行ant时出现以下错误。
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;
}
}
我的测试应用程序中的测试类
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...
}
}
我使用以下参数创建了我的两个ant build.xml
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 :(得分:0)
找到了答案 - 我也尝试进行单元测试。
所以这是成功构建单元测试并获得代码覆盖的简短版本
在Eclipse中,对于您的项目,打开Properties-&gt; Java Build Path并选择“Libraries”-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
您将在tests / bin
中找到覆盖率报告干杯!