Java 在游戏中使用Clover执行代码覆盖!使用Ant的框架应用程序
我正在写一个蚂蚁脚本,在我的剧本上做一些事情!框架应用程序 目前,我正在从Ant脚本执行测试,只需调用exec“play auto test” 所以我现在基本上有两个问题:Java 在游戏中使用Clover执行代码覆盖!使用Ant的框架应用程序,java,build,playframework,clover,Java,Build,Playframework,Clover,我正在写一个蚂蚁脚本,在我的剧本上做一些事情!框架应用程序 目前,我正在从Ant脚本执行测试,只需调用exec“play auto test” 所以我现在基本上有两个问题: 我需要能够编译我的源代码,它也依赖于播放提供的模块(例如CRUD、Secure),这些模块没有编译版本,因此我试图通过在我的Ant脚本中调用Play precompile我自己来绕过它 一旦我开始编译,毫无疑问,我将再次面临无法使用junit目标执行测试的原始问题 更新#2:结果表明,我得到的错误是由于findById调
- 我需要能够编译我的源代码,它也依赖于播放提供的模块(例如CRUD、Secure),这些模块没有编译版本,因此我试图通过在我的Ant脚本中调用
我自己来绕过它Play precompile
- 一旦我开始编译,毫无疑问,我将再次面临无法使用
目标执行测试的原始问题李>junit
findById
调用需要从JPABase到House的转换(而不是IDE或play似乎关心它)。所以在我进去为所有play的“find*”方法投下演员阵容后,我得到了JUnit和Clover的报道!然而。。。我现在遇到两种错误:
- 在游戏中创建的实体类可以通过扩展
类来创建,该类提供了神奇的方法,如前面提到的模型
方法以及查找
方法。模型超类实际上扩展了GenericModel,后者通过抛出一个UnsupportedOperationException来实现这些方法。很明显,玩吧!在幕后做一些更神奇的事情来提供这些方法的实际实现。不幸的是,我的测试(和生产代码)依赖于count等方法,但它们在我的ant/junit场景中引发了异常(注意:运行计数
时一切正常)play auto test
- 我遇到的另一个错误是由于我使用了Spring模块。在我的一个类(根类)中,我调用
。现在我使用自动扫描,但在ant/junit测试环境中,Spring模块尚未设置我的Spring容器,因此调用只返回nullSpring.getBeanOfType(Some.class)
我觉得有一个神奇的补丁可以解决我的两个问题,但我不确定这个神奇的补丁是什么。Clover进行源代码级检测,所以它需要可用的源代码。在激活Clover生成字节码之前所做的一切都不会“Clover” Clover for ant拦截ant编译器调用,因此,如果您在ant脚本中的任何其他编译任务之前执行
,那么一切都应该由Clover检测
您可以以任何方式执行生成的编译代码,例如,从脚本或junit执行,只要代码已插入指令(当然clover.jar在类路径中可用),这并不重要。
Clover将Clover数据库的位置硬编码到插入指令的代码中,因此执行时无需指定任何内容
如果你能概述一下你是如何使用clover的,这将非常有帮助。你也可以在clover文档中重新检查。什么是“由于奇怪的原因而失败”?clover和Corbertura的另一个替代品是Emma。不久前,我写了一篇博客文章,让我们在没有仪器的情况下即时报道。也许吧它可以帮助?关于“不支持操作异常”,这是因为您没有检查源代码,但预编译框架和IDE显示了这一点。检查GIT的代码:我确信Clover设置正确,因为Clover报告了不需要“播放环境”的测试和类的覆盖率。现在的主要问题是,需要“播放环境”的测试没有执行ng(见更新#2)
<exec executable="${play.dir}/play.bat">
<arg line="auto-test"/>
</exec>
[javac] C:\projects\testproject\out\clover\classes\clover8583527041716431332.tmp\model\HouseTest.java:45: incompatible types
[javac] found : play.db.jpa.JPABase
[javac] required: models.House
[javac] __CLR2_5_115y15ygoxiz3dv.R.inc(1527);House found = House.findById(id);