4

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

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

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

  • 不要在测试中使用接口(违背对接口的编程——它是否计入测试?)
  • 复制检测类旁边的接口(硬编码接口的路径)

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

4

1 回答 1

4

在我看来,您好像在说 JUnit 遇到问题是因为接口不在类路径上?

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

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

如果这解决了你的问题,你可能想用更健壮的东西来代替快速和肮脏的东西,比如让接口在与实现分开的 jar 中可用。

于 2010-07-01T22:37:06.813 回答