标签: scoverage

如何专门针对集成测试强制执行scala代码覆盖?

我正在使用以下sbt命令运行集成测试

sbt clean cover it:test coverageReport

此命令运行集成测试,检测它并生成报告.

Build.sbt有以下内容:

coverageMinimum in IntegrationTest := 21.0
coverageFailOnMinimum in IntegrationTest := true
Run Code Online (Sandbox Code Playgroud)

输出如下:

[info] Statement coverage.: 20.16%
[info] Branch coverage....: 12.00%
[info] Coverage reports completed
[info] All done. Coverage was [20.16%]
Run Code Online (Sandbox Code Playgroud)

输出结果具有20.16%的代码覆盖率,但build.sbt中的限制未强制执行限制.

如果我将build.sbt更改为以下它的工作原理:

coverageMinimum := 21.0
coverageFailOnMinimum := true
Run Code Online (Sandbox Code Playgroud)

想要知道我为指定专门针对集成测试的限制而遗漏了什么

版本信息:

sbt:0.13.17

sbt-scoverage:1.5.1

scala code-coverage sbt scoverage

15
推荐指数
1
解决办法
420
查看次数

sbt 聚合单元和集成测试的覆盖率报告

我用的sbt插件scoverage来为我的斯卡拉项目的测试覆盖率报告。但是,我无法合并单元测试和集成测试的测试报告。

这是我运行的命令

sbt coverage test // to run unit tests
sbt coverage it:test // to run integration tests
sbt coverageReport // to generate coverage report
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我只得到了集成测试的覆盖率报告。

  • 如何生成汇总单元测试和集成测试结果的报告?

提前致谢。

integration-testing unit-testing scala sbt scoverage

9
推荐指数
1
解决办法
6208
查看次数

是否可以在不运行'sbt clean'的情况下运行Scala SBT Scoverage

如果可以利用sbt增量编译并避免每次运行测试时都必须重新编译整个项目,这将是很好的,这正是你所做的事情clean.但是以下顺序如下:

sbt> coverage
sbt> test
sbt> coverageReport
Run Code Online (Sandbox Code Playgroud)

不会重新生成覆盖率报告,但这个会做:

sbt> clean
sbt> coverage
sbt> test
sbt> coverageReport
Run Code Online (Sandbox Code Playgroud)

例如,以下序列将始终生成相同的覆盖率报告(即第一次生成的报告):

sbt> coverage
sbt> test
sbt> coverageReport
Run Code Online (Sandbox Code Playgroud)

在这里我更改了我的一个测试文件并再次运行:

sbt> coverage
sbt> test
sbt> coverageReport
Run Code Online (Sandbox Code Playgroud)

scala sbt scoverage

7
推荐指数
1
解决办法
620
查看次数

覆盖率:结合测试范围和测试范围

我用过滤器拆分了单元测试和集成测试:

  lazy val FunTest = config("it") extend Test

  def funTestFilter(name: String): Boolean = name endsWith "Spec"

  def unitTestFilter(name: String): Boolean = name endsWith "Test"

  ...
  testOptions in Test := Seq(Tests.Filter(unitTestFilter)),
  testOptions in FunTest := Seq(Tests.Filter(funTestFilter)),
  ...
Run Code Online (Sandbox Code Playgroud)

所以我可以做这样的事情:

sbt clean coverage test dockerComposeUp it:test dockerComposeStop coverageReport

可悲的是,这杀死了我所有的险种,只有生成BuildInfo的险种了。

仅使用sbt clean coverage test coverageReportsbt clean coverage it:test coverageReport按预期工作。

整个项目可以在这里找到:https : //github.com/pme123/play-binding-form

覆盖版本: 1.5.1

scala code-coverage sbt scoverage

7
推荐指数
2
解决办法
353
查看次数

sbt-scoverage排除语法

我刚开始第一次使用scoverage.它现在对我很有用,但是我遇到了一个排除包的语法问题.

当我的包结构如下:

- com
   - project
      - core
        - excluded
        - notExcluded
Run Code Online (Sandbox Code Playgroud)

我应该在build.sbt中添加什么来排除包:排除

提前致谢!

regex scala sbt scoverage

5
推荐指数
1
解决办法
1582
查看次数

如何使覆盖范围适用于不在同一项目根目录下的多个项目?

我在Scala中使用多项目结构。一些项目位于根项目之外。有一个simlink可以链接它们并使sbt起作用。这是结构的一个小例子:

一些项目

根文件夹/某些项目-> ../some-project

问题是:覆盖率不适用于这些项目,从而导致覆盖范围错误。

当我运行命令“ sbt reportCoverage”时,出现这种错误:

[错误](scalaCommons / *:coverageReport)找不到'/ Users / user1 / dev / root-folder / some-project的源根目录...

scala sbt scoverage

5
推荐指数
0
解决办法
271
查看次数

sbt-scoverage 的coverageExcludedPackages 不排除包

我正在使用 sbt scoverage 1.3.5 (Scala 2.11.8),并且我有一堆我不想包含覆盖率报告的类。特别是基类及其测试位于com/corp/something/something_elsemain 和 test 中。我已将以下几行添加到我的 buld.sbt 中:

coverageEnabled := true
coverageMinimum := 90
coverageFailOnMinimum := true
coverageExcludedPackages := """com.corp.something.something_else.*;"""
Run Code Online (Sandbox Code Playgroud)

我已经尝试过用单引号代替\\.点,有或没有最后的分号.*,有或没有最后的分号,但到目前为止,当我运行sbt clean coverage test coverageReport报告时包含所有内容,并且它不排除我列出的包。我缺少什么?

也许类似地,即使所有包的覆盖率都低于 90%,覆盖率报告也不会失败,并且根据我设置的选项,它应该会失败,对吧?

scala sbt scoverage

5
推荐指数
0
解决办法
1136
查看次数

如何用scoverage运行单个scala测试?

我知道sbt clean coverage test将使用项目中的所有测试用例生成覆盖率报告,即使使用温暖的JVM也需要很长时间才能完成.

我希望对我编写的代码的测试运行覆盖,所以我尝试运行单个测试用例sbt coverage test-only package.ScalaSpec,我得到以下错误.

错误

[scala-project] $ coverage test-only package.ScalaSpec <set>:1: error: eof expected but 'package' found. coverageEnabled in ThisBuild := true test-only package.ScalaSpec ^ [error] Error parsing expression.

scala sbt scoverage

5
推荐指数
1
解决办法
1094
查看次数

从intellij运行scoverage

我想知道,是否有可能从intellij(不是从终端)运行scoverage,甚至更好,看看像intellij本地报道的scoverage报告?

谢谢

scala intellij-idea scoverage

5
推荐指数
1
解决办法
884
查看次数

如果测试覆盖率低于最低阈值,如何中断构建?

如果测试覆盖率低于阈值,我们希望在 codeship 上构建失败。但它并没有使构建失败。

覆盖插件:

addSbtPlugin("org.scoverage" % "sbt-scoverage" % "1.3.5")
Run Code Online (Sandbox Code Playgroud)

在 build.sbt 中添加了以下两条语句

coverageMinimum := 80,
coverageFailOnMinimum := true
Run Code Online (Sandbox Code Playgroud)

如果测试覆盖率低于 80,即使在本地也不会失败。我运行的命令是

sbt clean coverage test coverageReport
Run Code Online (Sandbox Code Playgroud)

scala sbt scalatest scoverage

5
推荐指数
1
解决办法
538
查看次数