我正在使用一个大的应用程序来测试。为了运行测试,我将可测试的war文件(test.war)添加到现有的应用程序中。ear并远程部署在WildFly 10服务器上。
@Deployment
public static EnterpriseArchive createDeployment(){
return ShrinkWrap.createFromZipFile(EnterpriseArchive.class, new File("../earapp/target/earapp-0.0.1-SNAPSHOT.ear"))
.addAsModule(Testable.archiveToTest(ShrinkWrap.create(WebArchive.class, "test.war")
.addClass(CurrencyConverterTest.class)
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")));
}
我的需求的下一部分是在测试运行后获得代码覆盖率报告。为此,我使用了Jacoco,并使用Jacoco Maven插件运行它。
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.7.201606060606</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<goals>
<goal>report</goal>
</goals>
</execution>
</plugin>
应用程序。ear得到部署,即使测试运行正常,但在生成报告时,Jacoco失败,出现异常“IllegalStateException:Jacoco中类的不兼容执行数据……”
只有包含测试用例的类才会出现异常。如果我在Jacoco Maven插件中使用排除标记排除该类(CurrencyConverterTest.class),则异常会消失,但Jacoco生成的报告不包含任何数据。我也查过杰科科。exec,据我所知,它包含有效数据。
因为我不能共享我正在使用的专有代码,所以我在github上创建了三个简单的项目来模拟相同的项目。
对我来说,看起来Jacoco代码中有一些bug,但我也可能是错的。请帮帮我。
更新:构建git repo上共享项目的步骤
步骤1:签出所有三个项目,并作为eclipse项目导入eclipse。
第2步:运行maven命令清洁instll为项目1
第三步:为项目2(earapp)运行maven命令清理包。这将在目标目录中创建一个耳文件。
第4步:在本地机器上以独立模式启动WildFly 10。
步骤5:为项目3运行maven命令clean install(eartest)。这将使用步骤3中生成的ear,并将其部署到WildFly 10应用服务器中,然后运行测试。
不幸的是,您的示例无法构建:
[ERROR] Failed to execute goal on project eartest:
Could not resolve dependencies for project com.sg.eartest:eartest:jar:0.0.1-SNAPSHOT:
Could not find artifact org.jboss.osgi.metadata:jbosgi-metadata:jar:3.0.1.Final in central (https://repo.maven.apache.org/maven2)
如果它位于一个GitHub存储库中,那么使用它也会更简单。
然而:
确保在所有测试模块中使用完全相同版本的JaCoCo。
并确保测试中的JVM被优雅地终止,否则您可能会收到损坏的“jacoco.exec”文件,因为默认情况下它是在JVM关闭期间保存的。在早期版本的JaCoCo中,这种损坏的文件可能会导致
IllegalStateException: Incompatible execution data for class...
(按https://github.com/jacoco/jacoco/issues/95#issuecomment-17271597)
JaCoCo版本0.7.7-https://github.com/jacoco/jacoco/pull/397使用最新发布的版本是一种很好的做法,因为它们带来了错误修复和改进-http://www.eclemma.org/jacoco/trunk/doc/changes.html
最后,您的测试似乎完全位于与测试中的主代码分开的模块中。“报告”mojo为当前模块的类创建报告。使用“报告聚合”来聚合跨模块的覆盖范围——它的留档可以在http://www.eclemma.org/jacoco/trunk/doc/report-aggregate-mojo.htmlhttps://groups.google.com/forum/#中提到了一些例子!msg/jamoco/8zjkSseaxD4/QOux-Ws-AgAJ
我正在使用Jacoco使用ANT查找单元测试的代码覆盖率,但报告没有生成,我得到了这个错误序列: 我已经阅读了这些答案,但似乎没有一个可以帮助我解决问题。 Jacoco代码覆盖报告生成器显示错误:“捆绑包‘代码覆盖报告’中的类与执行数据不匹配” jacoco:对于报告生成,必须使用与运行时相同的类文件 我在Eclipse上编译了所有类,并使用ANT构建工具对这些类执行代码覆盖。由于一些依赖关系,我
我们有一个Maven多模块项目,由父级(HelloWorld)和不同的子级(HelloWorldServices和HelloWorldPresentation)组成,并使用Jenkins进行构建。 运行成功测试后的错误是
我有一个自定义类。 现在我有了
我有一个python脚本,它计算给定文件的字数,并在执行后将输出保存到“result.txt”文件中。我希望docker容器在容器启动时执行此操作,并在控制台上显示输出。下面是我的docker文件和python文件 我正在映射一个本地目录,它有两个文本文件IF. txt和Limerick1.txt从主机到容器内的目录/home/data,容器内的python代码读取文件并将输出保存到result.
我正在尝试在PhantomJS中运行Jasmine。经过很多努力,我可以归结为: 代码一直执行到it(),但回调永远不会执行:| [编辑]我正在尝试将phantom与jasmine一起用于端到端测试。我已经有了一个应用程序服务器,并且我正在使用Karma进行单元测试。所以我认为testRunner.html不会有帮助。PhantomJS应该登录我的应用程序并做一些事情,我会用Jasmine进行测试
我正在使用 Maven 3.8.3、JUnit 5.4.2 和 Jacoco 0.8.2,并且我正在尝试创建测试覆盖率报告。 我有一个只有单元测试的项目,但我无法运行报告,我反复收到错误:由于运行时缺少执行数据文件而跳过JaCoCo执行: 以下是我的pom的配置方式: 任何想法,我错过了什么配置?