scala – Play上的代码覆盖率!项目
我玩了!项目,我想添加一些代码覆盖率信息.到目前为止,我已经尝试过
JaCoCo和
scct.前者存在基于字节码的问题,因此它似乎对Scala编译器自动生成的方法(例如copy或canEqual)缺少测试提出警告. scct似乎是一个更好的选择,但无论如何我在两个测试期间都会遇到很多错误.
让我坚持使用scct.我基本上每次尝试连接数据库的测试都会出错.我的许多测试都将一些灯具加载到内存中的H2数据库中,然后进行一些断言.我的Global.scala包含 override def onStart(app: Application) { SessionFactory.concreteFactory = Some(() => connection) def connection() = { Session.create(DB.getConnection()(app),new MySQLInnoDBAdapter) } } 而测试通常被封闭在一个块中 class MySpec extends Specification { def app = FakeApplication(additionalConfiguration = inMemoryDatabase()) "The models" should { "be five" in running(app) { Fixtures.load() MyModels.all.size should be_==(5) } } } 行运行(app)允许我在连接到内存数据库的工作应用程序的上下文中运行测试,至少通常如此.但是当我运行代码覆盖任务时,例如scct coverage:doc,我收到很多与连接数据库有关的错误. 更奇怪的是,至少有4种不同的错误,例如: > ObjectExistsException:缓存播放已存在
解决方法
specs2测试默认并行运行. Play禁用标准单元测试配置的并行执行,但scct使用不同的配置,因此它不知道不并行运行.
尝试将此添加到您的Build.scala: .settings(parallelExecution in ScctPlugin.ScctTest := false) 或者,您可以将顺序添加到测试类的开头,以强制所有可能的运行配置按顺序运行.我的文件仍然存在,因为当我使用Play的早期版本候选人时,我认为我在Build.scala解决方案中遇到了一些问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |