我刚刚在我的Eclipse设置中安装了EclEmma并在测试套件中运行它,看看我对其目标方法的代码覆盖率。
我发现我抛出新NullPointerException
的所有行都没有被覆盖,尽管在测试中断言在调用该方法时会抛出一行。我发现这些测试通过了!
以下是一个例子:
public static boolean isXMLFile(File f) {
if(f==null) {
throw new NullPointerException("isXMLFile: Input File must not be null");
}
}
我发现当我在jUnit测试中使用isXMLFile(null)
调用上面的代码时,我得到了我想要的NPE,但我认为它不是来自我认为它的位置!
我遗漏了一些关于运行时异常的非常基本的东西,不是吗?
答案 0 :(得分:1)
如果你转储异常的堆栈跟踪,你会看到它的确切位置。
那就是说 - 你可能不想抛出一个空指针异常,你可能想要抛出一个非法的参数异常。
答案 1 :(得分:0)
我确定你是否在任何地方使用f并且f为null,无论如何都会抛出异常
答案 2 :(得分:0)
跟踪例外来源的另一种方法是为每个例子手动输入略有不同的消息。您将能够使用标准调试器清楚地看到这些。