我正在编写一个Ant脚本,在我的Play上做一些
additional checks!框架应用.
目前,我正在从我的Ant脚本执行我的测试,只需要执行一个exec调用“播放自动测试”.
有没有人知道如何将Clover整合到Play测试套件中?显然,我并不需要使用上述方法来运行我的测试.
我还尝试使用传统的执行JUnit测试的方式(即使用Ant的junit目标)编写Ant脚本,我有两个问题:
>当我执行所有的测试时,只有第一个测试将成功执行,而其他的测试会因奇怪的原因而失败
>如果我只是在我的套件中公开一个测试,并且测试运行成功,那么我的代码覆盖率为0%.那么我以为我不正确地设置了三叶草,但是,我创建了一个简单的类,测试了一个没有任何东西的生产类,并且覆盖率按预期的程度上升了.
所以如果我要下去junit路线,我需要知道如何执行所有的测试,以便他们可以一个接一个成功运行(使用播放方式运行播放自动测试工作),我需要知道为什么Clover似乎没有接受Play测试所触及的代码行.
(我知道有一个Cobertura模块的Play,但是,我发现Clover做得更好,告诉我一个准确的覆盖率)
更新:不幸的是,我无法复制我以前遇到的确切错误,因为我遇到编译问题,当我尝试和手动编译的东西.我已经开始使用安全模块,它只包含Java源文件.所以在我的Ant脚本中,我打电话给play预编译,它产生Secure模块的字节码(以及系统中的所有其他内容,包括我的代码).所以现在当我尝试使用Clover编译我的应用程序代码时,我认为编译器有点混乱,因为我有两个版本的类 – 一个由预编译命令(非三叶草)生成,一个由我自己编写蚂蚁编辑(用三叶草):
[javac] C:projectstestprojectoutcloverpmodelHouseTest.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);
所以我现在基本上有两个问题:
>我需要能够编译我的源代码,这也取决于Play提供的模块(例如CRUD,Secure),没有编译版本,因此我试图通过在我的Ant脚本中调用播放预编译
>一旦我编译工作,我无疑会再次出现我的原始问题,无法使用junit目标执行测试.
更新#2:事实证明,我得到的错误是由于findById调用需要从JPABase到House的转换(不是IDE或播放似乎关心它).所以在我进入并放置所有播放的“find *”方法之后,我实际上得到了JUnit和Clover报告!但是…我现在得到两种错误:
>在Play中创建的实体类可以通过扩展Model类来创建,该类提供了魔术方法,比如那些find方法以及count方法. Model超类实际上扩展了GenericModel,它通过抛出UnsupportedOperationException来实现这些方法.显然玩!在幕后做更多的魔术来提供这些方法的实际实现.不幸的是,我的测试(和生产代码)依赖于计数等方法,但是它们在我的ant / junit场景中抛出异常(注意:运行播放自动测试时,一切都可以正常运行.
>我得到的另一个错误是由于我使用Spring模块的事实.在我的一个类(根类)中,我调用BeanOfType(Some.class).现在我使用自动扫描,但在ant / junit测试环境中,Spring模块尚未设置我的弹簧容器,因此调用只返回null.
我有一种感觉,有一个魔法修复,将解决我的两个问题,但我不确定这个魔法修复是什么.
本文发布于:2024-01-28 11:47:37,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064136627196.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |