加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – Play上的代码覆盖率!项目

发布时间:2020-12-16 18:48:25 所属栏目:安全 来源:网络整理
导读:我玩了!项目,我想添加一些代码覆盖率信息.到目前为止,我已经尝试过 JaCoCo和 scct.前者存在基于字节码的问题,因此它似乎对Scala编译器自动生成的方法(例如copy或canEqual)缺少测试提出警告. scct似乎是一个更好的选择,但无论如何我在两个测试期间都会遇到很
我玩了!项目,我想添加一些代码覆盖率信息.到目前为止,我已经尝试过 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:缓存播放已存在
> SQLException:尝试从已关闭的池中获取连接
>配置错误[无法连接数据库[默认]]
>没有为jdbc找到合适的驱动程序:h2:mem:play-test – 410454547

Why is that launching tests in the default configuration is able to connect to the database,while running in the context of scct (or JaCoCo) fails to initialize the cache and the db?

解决方法

specs2测试默认并行运行. Play禁用标准单元测试配置的并行执行,但scct使用不同的配置,因此它不知道不并行运行.

尝试将此添加到您的Build.scala:

.settings(parallelExecution in ScctPlugin.ScctTest := false)

或者,您可以将顺序添加到测试类的开头,以强制所有可能的运行配置按顺序运行.我的文件仍然存在,因为当我使用Play的早期版本候选人时,我认为我在Build.scala解决方案中遇到了一些问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读