标签: emma

EMMA覆盖工具不显示逐行覆盖

我正在使用EMMA工具进行代码覆盖,尽管我付出了最大的努力,但EMMA拒绝查看原始.java文件并逐行生成覆盖.

我们使用ANT来构建代码,并将debug设置为true.我知道EMMA正在测量覆盖率,因为.emma文件似乎正在生成并正确合并.报告能够以百分比呈现高水平的方法覆盖率.

但为什么它不会看到.java文件?我得到的是:[在源路径中找不到源文件'a/b/c/d/e/f/code.java']

java ant code-coverage emma

5
推荐指数
1
解决办法
3823
查看次数

Scala,sbt和emma或Cobertura

我想在Scala项目中使用代码覆盖,使用Simple Build Tool作为构建工具.在这个项目中使用的最好的是什么.(我是这些技术的新手.)任何人都可以告诉我如何在我的项目中配置代码覆盖率.如果你能提供一个帮助我理解事情的例子.

scala emma cobertura sbt

5
推荐指数
1
解决办法
2226
查看次数

使用TeamCity构建android项目 - 测试和代码覆盖问题

我正在开发一个由.NET代码和android java项目组成的项目.我们试图让两种类型的项目都在一个TeamCity环境中运行.

.NET项目正在通过一些NUnit项目进行测试,我们使用DotCover生成覆盖报告,所有项目似乎都在膨胀.现在,android/java项目正在使用ant runners构建,我们已经为生产和测试项目提供了一些构建脚本,而且问题似乎是创建了java覆盖报告.

我们使用以下ant目标创建了一个构建步骤:

clean emma debug install test
Run Code Online (Sandbox Code Playgroud)

构建步骤设置为启用"Emma coverage runner"(选中"在coverage数据中包含源文件"选项).

运行构建步骤时发生错误,在日志片段中说明以下内容(已附加完整日志文件).另一个重要问题是android/java单元测试没有出现在构建的整体统计中.

这是日志snippit:

[16:37:52]: [aapt] Generating resource IDs...
[16:37:55]: [subant] -pre-compile
[16:37:55]: [subant] -compile (1s)
[16:37:55]: [-compile] do-only-if-manifest-hasCode (1s)
[16:37:55]: [do-only-if-manifest-hasCode] sequential (1s)
[16:37:55]: [sequential] if (1s)
[16:37:55]: [if] Adding debug=true parameter to javac task
[16:37:55]: [if] javac
[16:37:55]: [if] Compiling 1 source file to C:\BuildAgent\work\c588ac2d935670cb\MyAndroidProject\bin\classes
[16:37:55]: [if] EMMA: Instrumenting classes
[16:37:55]: [EMMA: Instrumenting classes] EMMA commandline: [-ix, -*Test*, -cp, C:\BuildAgent\work\c588ac2d935670cb\MyAndroidProject\bin\classes, -m, overwrite]
[16:37:55]: [EMMA: Instrumenting classes] EMMA: …
Run Code Online (Sandbox Code Playgroud)

ant teamcity android code-coverage emma

5
推荐指数
1
解决办法
1558
查看次数

完全覆盖的代码的EclEmma覆盖率是否低于100%?

我刚刚写了一些简单的示例代码,以确保我正确安装了EclEmma.我没有得到100%的报道,我不明白为什么.突出显示它与类名有关.这是我的代码,以及相应的JUnit测试,EclEmma强调它的方式:

算术类

测试算术类

覆盖率结果显示三个指令Arithmetic没有被击中,即使两个实际方法似乎完全覆盖:

覆盖范围信息

我已经阅读了关于基本块覆盖的EclEmma文档,但我仍然感到困惑.我不确定错过了哪些基本块.起初,我认为EclEmma可能只是忽略了类的字节码,但ArithmeticTest似乎处理得很好.

我有两个密切相关的问题:

  1. 这是否表明我安装/配置EclEmma的方式有问题?
  2. 完全覆盖的代码具有高但不是100%的EMMA覆盖率是正常/可接受的,如果是这样,它是如何工作的?

java eclipse code-coverage emma eclemma

5
推荐指数
1
解决办法
2084
查看次数

Eclipse EclEmma 错过了说明

我正在使用 Eclipse-STS + EclEmma 插件来查看我的代码的覆盖率。在我所有的抽象 util 类(只有静态方法)中,我Instructions Counter在类定义行看到 3 个遗漏的指令(报告):

在此处输入图片说明

红线左侧没有可用的标记,所以我不知道这些说明究竟是什么。也许一些构造函数?我能做些什么来覆盖它们?

eclipse code-coverage emma sts-springsourcetoolsuite

5
推荐指数
1
解决办法
3279
查看次数

VM 选项“UseSplitVerifier”缺少 +/- 设置

我正在使用以下命令在我的系统中运行 emma 代码覆盖工具,

D:\DeadLockDetection\DDinDOS>java -XX:UseSplitVerifier -cp emma.jar emmarun -jar process-3-1.0.jar
Run Code Online (Sandbox Code Playgroud)

运行上述命令时出现以下错误,

Missing +/- setting for VM option 'UseSplitVerifier'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题。

java jvm emma

5
推荐指数
1
解决办法
7098
查看次数

Emma运行时控制器没有启动

我的主要目标是使用CTL coverage.get在正在运行的Web应用程序上使用EMMA获取代码覆盖率.我使用emma maven插件.

因此,我使用检测代码部署我的Web应用程序.
在tomcat日志中看到:

EMMA: collecting runtime coverage data ...
Run Code Online (Sandbox Code Playgroud)

但没有:

EMMA: runtime controller started on port [47653]
Run Code Online (Sandbox Code Playgroud)

这意味着我无法使用ctl,因为没有人在听它.
运行时控制器无法启动的原因是什么?

我的父pom.xml:

<project>
        ...
         <build>
            <plugins>
                ...
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                        <artifactId>emma-maven-plugin</artifactId>
                        <inherited>true</inherited>   
                        <executions>
                            <execution>
                                <id>instrument</id>
                                <phase>process-test-classes</phase>
                                <goals>
                                    <goal>instrument</goal>
                                </goals>
                            </execution>                            
                        </executions>
                </plugin>
                ...
            </plugins>
        </build>
        ... 
        <reporting>
            <plugins>        
                ...
                <plugin>      
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>emma-maven-plugin</artifactId>
                    <version>1.0-alpha-3</version>
                    <inherited>true</inherited>      
                </plugin>
                ...
            </plugins>
        </reporting>
        ...
    </project>
Run Code Online (Sandbox Code Playgroud)

提前致谢.任何提示都受到高度赞赏.

maven-2 code-coverage emma maven-plugin

4
推荐指数
1
解决办法
1832
查看次数

Android的代码覆盖率(calabash-android BDD)

我正在使用calabash-android测试我的android应用程序,它提供了自己的"测试项目",脚本重命名它的包以反映被测试的应用程序,然后使用InstrumentationTestRunner子类:

adb shell am instrument -w -e class sh.calaba.instrumentationbackend.InstrumentationBackend #{ENV['TEST_PACKAGE_NAME']}/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner
Run Code Online (Sandbox Code Playgroud)

我会接受任何答案,允许我为Android应用程序生成类似于Emma或Cobertura的代码覆盖率报告,并在calabash-android中测试时收集数据.

为了让艾玛工作,我有......

  • 尝试按照这些说明让Maven构建我的项目(因为我使用ant已经太久了).coverage.em生成一个文件target/emma
  • 修改了calabash-android脚本,添加" -e coverage true"
  • 当我运行calabash-android时,我最终看到"生成的覆盖数据到/data/data/my.project/files/coverage.ec"
  • adb -e pull /data/data/my.project/files/coverage.ec coverage.ec

...所以现在我应该可以运行:

  • java -cp $ANDROID_HOME/tools/lib/emma.jar emma report -r html -in target/emma/coverage.em,coverage.ec

但是我收到一个错误:

EMMA: processing input files...
java.io.UTFDataFormatException: malformed input around byte 107
Run Code Online (Sandbox Code Playgroud)

...所以我认为android maven插件有问题,我正在试图弄清楚如何生成coverage.em文件.我跑了" android update project -p ."," ant emma"和" ant emma debug",但我无法在任何地方找到报道 ......

...生成的build.xml文件似乎暗示只有在运行"ant emma test"时才会生成coverage.em文件,但我认为这不会起作用,因为测试应用程序是由葫芦 - 机器人.

为了让Cobertura工作,我有...... …

android code-coverage emma cobertura

4
推荐指数
1
解决办法
3110
查看次数

在使用ant为库项目构建Android测试时,如何使用filter for emma?

从这个问题:

在使用ant构建Android测试时,如何使用filter for emma?

我知道emma可以通过在目标项目的ant.properties中添加以下行来使用过滤器,而不是测试项目,

emma.filter=-com.your.excluded.package.*
Run Code Online (Sandbox Code Playgroud)

但如果我的目标项目是图书馆项目,它似乎无法正常工作.

我的工作区看起来像这样:

projectlib1         : lib project using lib2
projectlib1/tests   : unit tests for lib1
projectlib2         : lib project using lib3
projectlib2/tests   : unit tests for lib2
projectlib3         : stand alone lib
Run Code Online (Sandbox Code Playgroud)

当我为lib1运行覆盖时,我也获得了lib2和lib3的覆盖文件,这是我不想要的.我应该在哪里添加emma.filter?我试着将它放在每个项目的根部,但到目前为止它没有起作用.

任何建议欢迎!谢谢

ant android emma android-library

4
推荐指数
1
解决办法
1055
查看次数

Jacoco将coverage.ec转换为没有coverage.em的报告

我可以按照以下步骤获取代码覆盖率报告,

  1. 启用所需构建类型的覆盖范围(例如,调试)

    buildTypes { debug { testCoverageEnabled true } }

  2. 应用Jacoco插件并设置版本

    apply plugin: 'jacoco' jacoco { version "0.7.1.201405082137" }

  3. ./gradlew createDebugCoverageReport

  4. 运行connectedAndroidTest中的所有测试,并基于它们生成覆盖率报告.我可以在中找到报道报道

    app/build/outputs/reports/coverage/{buildType}/index.html

和一个coverage.ec文件

app/build/outputs/code-coverage/connected/coverage.ec

但是没有jacoco.exec,因为我从Android Instrumentation而不是Robolectric测试用例运行.

当我从ADB运行仪器(我猜这仍然使用Emma)如下所示,我得到一个coverage.ec文件,如下所示,

$ adb shell am instrument -w -e coverage true -e coverageFile /sdcard/coverage.ec com.sample.helloworld.test/.Runner
....
OK (4 tests)

Generated code coverage data to /sdcard/coverage.ec
Run Code Online (Sandbox Code Playgroud)

但由于coverage.em文件丢失,我无法将coverage.ec转换为使用emma报告,

java -cp ~/adt-bundle-mac-x86_64-20130729/sdk/tools/lib/emma_device.jar emma report -r html -in \
coverage.em,myFile.ec,myapp_coverage1.ec -sp /path/to/myapp/src
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题?

android emma jacoco android-studio android-gradle-plugin

4
推荐指数
2
解决办法
7194
查看次数