我正在使用否定测试用例测试我的代码,即我已从属性文件中删除了其中一个键。在这种情况下,代码假设给出一个丢失的资源消息(在Missing Resource excpetion的catch块中给出的Looger消息),而是它从IO异常的catch块发出消息,消息是“IO Exception:java.lang .NullPointerException“。代码流如下: 主类有一个方法,它试图从常量文件中获取密钥 constants file inturn使用资源包从属性文件中获取值。 我正在我的主类中创建一个常量文件的实例。当我从属性文件中删除密钥时,这个实例变为空。
答案 0 :(得分:1)
当缺少键时,Properties类返回null,因此您可能拥有类似这样的代码:
} catch (Exception e) {
throw new IOException(e);
}
当您尝试使用结果时,该异常是一个空指针异常。相反,您必须检查null并抛出缺少的资源异常,如果这是类返回的内容。
答案 1 :(得分:0)
Java中已经存在一个不再存在的密钥作为IOException,因此无论如何都会抛出。如果您想要抛出MissingResourceException,则必须在IOException catch块中执行此操作。
或者,您可以检查键为null,如果是,则抛出MissingResourceException。