Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/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
Java 在游戏中使用Clover执行代码覆盖!使用Ant的框架应用程序_Java_Build_Playframework_Clover - Fatal编程技术网

Java 在游戏中使用Clover执行代码覆盖!使用Ant的框架应用程序

Java 在游戏中使用Clover执行代码覆盖!使用Ant的框架应用程序,java,build,playframework,clover,Java,Build,Playframework,Clover,我正在写一个蚂蚁脚本,在我的剧本上做一些事情!框架应用程序 目前,我正在从Ant脚本执行测试,只需调用exec“play auto test” 所以我现在基本上有两个问题: 我需要能够编译我的源代码,它也依赖于播放提供的模块(例如CRUD、Secure),这些模块没有编译版本,因此我试图通过在我的Ant脚本中调用Play precompile我自己来绕过它 一旦我开始编译,毫无疑问,我将再次面临无法使用junit目标执行测试的原始问题 更新#2:结果表明,我得到的错误是由于findById调

我正在写一个蚂蚁脚本,在我的剧本上做一些事情!框架应用程序

目前,我正在从Ant脚本执行测试,只需调用exec“play auto test”

所以我现在基本上有两个问题:

  • 我需要能够编译我的源代码,它也依赖于播放提供的模块(例如CRUD、Secure),这些模块没有编译版本,因此我试图通过在我的Ant脚本中调用
    Play precompile
    我自己来绕过它
  • 一旦我开始编译,毫无疑问,我将再次面临无法使用
    junit
    目标执行测试的原始问题
更新#2:结果表明,我得到的错误是由于
findById
调用需要从JPABase到House的转换(而不是IDE或play似乎关心它)。所以在我进去为所有play的“find*”方法投下演员阵容后,我得到了JUnit和Clover的报道!然而。。。我现在遇到两种错误:

  • 在游戏中创建的实体类可以通过扩展
    模型
    类来创建,该类提供了神奇的方法,如前面提到的
    查找
    方法以及
    计数
    方法。模型超类实际上扩展了GenericModel,后者通过抛出一个UnsupportedOperationException来实现这些方法。很明显,玩吧!在幕后做一些更神奇的事情来提供这些方法的实际实现。不幸的是,我的测试(和生产代码)依赖于count等方法,但它们在我的ant/junit场景中引发了异常(注意:运行
    play auto test
    时一切正常)

  • 我遇到的另一个错误是由于我使用了Spring模块。在我的一个类(根类)中,我调用
    Spring.getBeanOfType(Some.class)
    。现在我使用自动扫描,但在ant/junit测试环境中,Spring模块尚未设置我的Spring容器,因此调用只返回null


我觉得有一个神奇的补丁可以解决我的两个问题,但我不确定这个神奇的补丁是什么。

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);