Scala的代码覆盖率工具

时间:2009-06-05 02:15:28

标签: unit-testing scala continuous-integration hudson code-coverage

Scala有哪些可用的代码覆盖率工具?

我有Scala规范测试和Hudson持续集成设置。有什么东西我可以挂钩到这个设置来测量和跟踪代码覆盖率吗?

6 个答案:

答案 0 :(得分:18)

SCCT是一个编译器插件,用于检测类以收集覆盖数据:

http://mtkopone.github.com/scct/

答案 1 :(得分:9)

我使用Cobertura。但是,任何Java覆盖工具都应该可以正常工作。唯一的问题是,您将在覆盖列表中最终获得大量自动生成的类。这是因为当Scala编译成非常自然的JVM字节码时,它被迫生成一个非常大量的类来适应常见的功能特性,如惰性求值。

答案 2 :(得分:9)

Undercover好一点。

答案 3 :(得分:8)

非主流语言(例如Scala)的一个问题是很难找到工具,因为它们很难构建。

本技术论文Branch Coverage for Arbitrary Languages Made Easy(我是作者)介绍了如何使用通用工具构建基础架构以系统方式为语言构建测试覆盖工具,以帮助解决此问题。

我们以这种方式实施了test coverage tools for Java, C#, COBOL, C, C++, PL/SQL, ...,包括指导员,数据收集和测试覆盖率显示和报告。 像这样实现Scala会很简单。

其他答案提出的解决方案会产生Scala实施的混乱信息(“自动生成类”)。开发人员希望看到的是覆盖数据的代码。我们使用的方法是源代码,因此结果完全是根据源代码说明的;甚至测试覆盖率查看器也会显示覆盖覆盖率信息的源代码。

答案 4 :(得分:3)

我已经整理了一个名为xsbt-coveralls-plugin的SBT插件,它使用了scct,但是将结果发布到http://coveralls.io

免责声明: 我昨天(2013年3月10日)刚刚制作了这个插件,所以不要指望它是完美的,但是会向github发送错误和功能请求页

但是,如果您希望将覆盖率报告编码为公开可见,那就太好了。查看结果here

的示例

答案 5 :(得分:2)

我使用jacoco。它不需要编译或运行时依赖性,仪器类在特殊仪器阶段即时运行。

它还与Sonar集成并在Maven Central上发布。

以下是示例:https://github.com/Godin/sonar-experiments/tree/master/jacoco-examples/scala-example

我想添加更好的报告:更详细的分支覆盖makrup,不包括生成的类/方法,并且像ScalaDoc一样方便(例如参见SCCT报告)