java - Ant 构建 - Emma 代码检测 - JUnit 测试需要接口(interface),Emma 不检测它们

标签 java ant junit instrumentation emma

我有一个 Ant 构建文件,我在其中编译应用程序和测试的 Java 源代码、检测应用程序类、运行 JUnit 测试并生成 JUnit 和 Emma 代码覆盖率报告。 JUnit 任务被赋予了检测类的路径。

问题是接口(interface)没有检测(Emma FAQ),但我在测试中使用它们,但 JUnit 找不到它们。

我可以想到 2 个解决方案:

  • 不要在测试中使用接口(interface)(违背接口(interface)编程 - 它算在测试中吗?)
  • 复制检测类旁边的接口(interface)(硬编码接口(interface)的路径)

我应该如何处理和解决这个问题?

最佳答案

在我看来,您似乎是在说 JUnit 遇到了麻烦,因为接口(interface)不在类路径上?

通常的答案是将它们放在那里。

快速而肮脏的答案可能是将未检测类的类路径放入检测类路径之后的联合类路径中。类加载器应使用它找到的第一个匹配项,因此将使用经过检测的实现而不是未经过检测的实现,但接口(interface)仍然可用。

如果这解决了您的问题,您可能希望用更健壮的东西替换快速和肮脏的东西,例如使接口(interface)在与实现分开的 jar 中可用。

关于java - Ant 构建 - Emma 代码检测 - JUnit 测试需要接口(interface),Emma 不检测它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3161672/

相关文章:

java - 尝试获取 token 时出现 GoogleAuthException "Unknown"

java - 如何使用java 8流将列表中的值相乘

java - 引用选项卡 Pane 中的按钮

java - 错误日志中缺少行号和 java 文件名

Java ant 帮助,不同的文件集用于不同的目标

java - JAXB 解码返回 'URI is not absolute' 错误

android - android 项目中缺少 ant.properties 文件

java - Junit测试中LocalDateTime反序列化的问题

Android JUnit 测试,无法解析 assertThat 中的 is(boolean)?

Spring data jpa存储库内存中测试用例