Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用EMMA for Android应用程序运行单元测试时出错_Android_Unit Testing_Emma - Fatal编程技术网

使用EMMA for Android应用程序运行单元测试时出错

使用EMMA for Android应用程序运行单元测试时出错,android,unit-testing,emma,Android,Unit Testing,Emma,为什么我在试图运行代码覆盖率高的测试项目时会出现非法访问错误 我在运行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.Except

为什么我在试图运行代码覆盖率高的测试项目时会出现非法访问错误

我在运行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 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...
    }
}

找到了答案-我也尝试了单元测试

下面是成功构建单元测试并获得代码覆盖率的简短版本

在Eclipse中,对于您的项目,打开Properties->Java构建路径并选择“Libraries”-选项卡。按“添加外部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中找到覆盖率报告

干杯

android create test-project -m ../ -n MyAppTest -p tests
ant clean instrument
cd tests
ant debug emma install test