首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >游戏中的代码覆盖!项目

游戏中的代码覆盖!项目
EN

Stack Overflow用户
提问于 2013-01-24 15:45:12
回答 3查看 2.1K关注 0票数 6

我有戏要演!我想在其中添加一些代码覆盖率信息的项目。到目前为止,我已经尝试过JaCoCoscct。前者存在基于字节码的问题,因此它似乎对Scala编译器(如copycanEqual )自动生成的方法缺少测试发出警告。scct似乎是一个更好的选择,但无论如何,我在两种测试中都会遇到许多错误。

让我坚持用scct。实际上,每次尝试连接到数据库的测试都会出现错误。我的许多测试都将一些补丁加载到内存中的H2数据库中,然后进行一些断言。我的Global.scala包含

代码语言:javascript
复制
override def onStart(app: Application) {
    SessionFactory.concreteFactory = Some(() => connection)

    def connection() = {
        Session.create(DB.getConnection()(app), new MySQLInnoDBAdapter)
    }
}

而测试通常被封装在一个块中,例如

代码语言:javascript
复制
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)
        }
    }
}

running(app)允许我在连接到内存数据库的工作应用程序的上下文中运行测试,至少通常是这样。但是,当我运行代码覆盖率任务(如scct coverage:doc )时,我会得到与连接数据库相关的很多

更奇怪的是,至少有4个不同的错误,比如:

  • ObjectExistsException:缓存播放已经存在
  • SQLException:尝试从已关闭的池中获取连接
  • 配置错误[无法连接到数据库默认值]
  • 没有找到适合jdbc:h2:mem:play-test-410454547的驱动程序。

为什么默认配置中的启动测试能够连接到数据库,而在scct (或JaCoCo)上下文中运行的测试无法初始化缓存和db?

EN

回答 3

Stack Overflow用户

发布于 2013-01-26 05:25:29

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

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

代码语言:javascript
复制
.settings(parallelExecution in ScctPlugin.ScctTest := false)

或者,可以将sequential添加到测试类的开头,以强制所有可能的运行配置按顺序运行。我的文件中仍然有这两种情况,因为我认为在使用早期发布的Play候选版本时,Build.scala解决方案出现了一些问题。

票数 1
EN

Stack Overflow用户

发布于 2014-01-12 21:04:22

Scala代码覆盖的一个更好的选项是Scoverage,它提供语句行覆盖率。https://github.com/scoverage/scalac-scoverage-plugin

添加到项目/plugins.sbt:

代码语言:javascript
复制
addSbtPlugin("com.sksamuel.scoverage" % "sbt-scoverage" % "1.0.1")

然后运行SBT与

代码语言:javascript
复制
sbt clean coverage test
票数 1
EN

Stack Overflow用户

发布于 2013-08-30 09:55:22

您需要在规范的开头添加顺序。

代码语言:javascript
复制
class MySpec extends Specification {
  sequential

  "MyApp" should {
  //...//
  }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14505229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档