NullPointerExceptions未在测试中抛出

时间:2010-11-09 15:45:21

标签: java unit-testing nullpointerexception

我刚刚在我的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,但我认为它不是来自我认为它的位置!

我遗漏了一些关于运行时异常的非常基本的东西,不是吗?

3 个答案:

答案 0 :(得分:1)

如果你转储异常的堆栈跟踪,你会看到它的确切位置。

那就是说 - 你可能不想抛出一个空指针异常,你可能想要抛出一个非法的参数异常。

答案 1 :(得分:0)

我确定你是否在任何地方使用f并且f为null,无论如何都会抛出异常

答案 2 :(得分:0)

跟踪例外来源的另一种方法是为每个例子手动输入略有不同的消息。您将能够使用标准调试器清楚地看到这些。