问题标签 [scoverage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sbt - 在 SBT 中“打包”时从已发布的应用程序中排除插件的 libraryDependencies
在我的 SBT 项目中,我使用sbt-scoverage插件。我做了文档所说的并添加ScoverageSbtPlugin.instrumentSettings
到build.sbt
. 到目前为止一切都很好。
当我package
的应用程序出现时,我可以看到pom.xml
不应该存在的依赖项:
这是 sbt-scoverage 插件的库依赖项,我不想在已发布的应用程序中将其作为依赖项。
我相信这种依赖关系是由ScoverageSbtPlugin.scala中的以下代码创建的:
谁能告诉我如何仅在我运行时添加此依赖项sbt scoverage:test
?
unit-testing - 在 sbt 中使用自定义和插件的配置执行任务?
我有一个 SBT 项目,它具有完整的构建定义和用于测试的自定义配置。
我添加了一个带有自己配置的插件,如果可能的话,我希望能够使用这两种配置来执行任务。
如果不可能,我想将插件中的配置拉入我的自定义配置中。
具体情况
我的自定义配置unit
用于将某些测试分类为单元测试,我想使用sbt-scoverage添加覆盖率。
我的完整构建定义包括:
为了执行单元测试,我运行sbt unit:test
.
IA)将如何添加到构建定义中sbt-scoverage
的配置中,或者 B)如何在 SBT 运行中同时包含和配置,例如?unit
scoverage
unit
sbt "unit,scoverage:test"
编辑根据提供的 2 个答案,我正在接近我想要的。我现在遇到的问题是测试过滤器,并将其应用于配置。我已经更新了上面的原始代码片段,以包含我使用的基于文件名的过滤器 - 请参阅testOptions
项目部分以及我的使用方式unitTestFilter
。为了增加覆盖率,我为覆盖率测试添加了新配置,所以现在有了UnitTest
、ComponentTest
和. 我现在遇到的问题是我无法让测试选项/文件名过滤器传播到覆盖配置。CoverageUnitTest
CoverageComponentTest
方法 1:创建一个扩展 scoverageTest 的配置
在上述方法中,不应用设置。如果我运行coverUnit:test
,它会执行组件和单元规范。我也尝试过 using testOptions in scoverageTest
,它与过滤器一起使用,但问题是我的项目中有 2 个配置,即 CoverageUnitTest 和 CoverageComponentTest,如果我使用in scoverageTest
,那么只有 1 个过滤器适用于这两个任务(即 coverUnit:test 和coverComponent:test 根据顺序执行单元测试或组件测试)。
方法2:扩展测试并添加到仪器中
同样,此方法不会使用 unitTestFilter 过滤测试。
通过查看 ScoverageSbtPlugin 源,看起来我可能需要以某种方式考虑覆盖 this: inConfig(scoverageTest)(Defaults.testSettings) ++
,这是正确的方法吗?
编辑 #2 这是一个变通方法,使用方法 1,将“CoverageUnitTest”替换为“scoverageTest”:
运行TEST_TYPE=ComponentSpec sbt coverComponent:test
scala - scoverageCompile、scoverageTest 排除的区别
根据配置(scoverageCompile 与 scoverageTest),类的排除发生在 scoverage 中,代码覆盖率差异很大。
结合 scoverageCompile / scoverageTest 排除文件如何影响代码覆盖率?
scala - 使用工作服定义 Travic CI 测试代码覆盖率 (scala)
正如您在项目中看到的那样,我成功地配置并使用了 Travis CI 和 Coveralls.io 的组合。由于这是一个开源项目,我很想定义 90% 的测试代码覆盖率阈值。有谁知道如何在 Travis CI 中结合 coveralls.io 定义这样的阈值?
谢谢!
最好的
playframework - 为什么 sbt-scoverage 报告 java.lang.RuntimeException: Duplicate mappings for JavaScript files?
我正在为一个用 Play Framework 编写的项目使用sbt-scoverage插件。
我面临以下java.lang.RuntimeException: Duplicate mappings
错误:
我的猜测是它试图service-main.js
从target
下面的某个地方转移scoverage-classes
。我不打算对任何 JavaScript 文件运行覆盖,因此我包含了以下设置:
它没有任何改变 - 错误仍然存在。如何指示 scoverage 忽略 JavaScript 文件?
scala - 覆盖率:来自分支覆盖率的模棱两可的测量
我注意到所有没有控制流的测试(例如 if、else、switch 等)都显示 100% 的分支覆盖率,因为代码块中不存在分支。例如
显示 100% 的分支覆盖率和 0% 的语句覆盖率。这是由于覆盖了 0/0 分支。在我看来,我在上面的测试用例中看到了一个分支,所以即使没有控制流也不应该有一个分支吗?
scala - 引起:java.lang.NoClassDefFoundError: org/sonar/plugins/surefire/api/AbstractSurefireParser
我安装了 SonarQube Server 4.5 和 SonarQube Runner 2.4。我在声纳插件目录中添加了 sonar-scoverage-plugin-1.1.0.jar。在 /opt/sonar-runner/sonar-runner.properties 中,我取消了注释
我尝试将 sonar -runner 用于此示例项目https://github.com/RadoBuransky/sonar-scoverage-plugin/tree/master/samples/sbt/multi-module。
我执行了两个命令
$ sbt clean 覆盖:测试
$声纳跑者
我得到了这个例外
谁能帮我解决这个问题?提前致谢。
scala - 使用 scala 测试获取 java 代码的代码覆盖率
该项目是一个多模块 maven 项目,其中 90% 的源代码是用 Java 编写的(在 Scala 中有一小部分)。单元测试是 80/20 java/scala,集成测试是 20/80 java/scala。
我试过 Clover,但(此时)它不支持 scala。
我试过雅可可。首先,由于多模块配置,我在获得任何结果时遇到了问题,但现在使用 Sonar 我已经显示了 java 覆盖范围(感谢http://www.aheritier.net/maven-failsafe-sonar-and-jacoco-在船上/)。我在 jacoco 中使用了 timezra ( http://timezra.blogspot.com/2013/10/jacoco-and-scala.html ),但这仅分析了 scala 的一小部分源代码。
我开始尝试 Scoverage,但这似乎与 timezra 有相同的问题(它分析 scala-to-scala,而不是我所拥有的混合)。因此,我什至没有尝试过 scct 或卧底。
有没有处理混合 java/scala 的工具?
java - scala的代码覆盖率在java中具有单独的测试项目
我有两个独立的项目,Product 和 CompoTestProduct。Product 用 Scala 编写并使用 sbt,而 CompoTestProduct 用 Java 编写并使用 maven。产品将部署在服务器中,CompoTestProduct 的测试类将在本地运行。我尝试使用scoverage,因为它说它支持Multi project reports
,但我仍然不知道如何做到这一点,而且我仍在努力使样本工作。我在示例项目中收到此错误:
我是这个代码覆盖测试的新手。您是否有其他教程或者可能知道其他可以为执行此设置生成测试代码覆盖率报告的框架/工具包?
scala - 使用 TestNG(和 Gradle)进行覆盖
是否可以将 Scoverage 与 TestNG 一起使用,还是必须使用 JUnit?我在我的 Gradle 脚本中包含了 gradle-scoverage 插件并且它正在运行,但它显示了 0.00% 的覆盖率。
有什么方法可以配置脚本工作还是我必须在 Scoverage 和 TestNG 之间进行选择?