因此,我需要为我正在改进的一些(遗留)代码编写测试。在一个方法中,我尝试解析一些字符串(这应该是合法的JSON)。然后如果字符串不代表有效的JSON,则可能会捕获JSONException
。例如:JUnit测试:如何使用try-catch块检查错误
public void transformToJSON(String source) {
try {
JSONObject js = new JSONObject(new JSONTokener(item.getHtml()));
}
catch (JSONException e) {
log(e)
}
//than js is added to an Hashset and the method is done
}
所以我想写一个良好的输入测试(看看我是否已经生成了正确的JSON对象)。通过检查Set中的对象,这很容易。
但是,对于错误的输入,我需要找出是否抛出了正确的错误。 我知道如果在代码中出现错误,我可以在测试中检查它。
- 通过设置规则并在测试方法中检查它。
- 通过测试
但try..catch
块都不会工作上面加了@Test(expected = JSONException.class)
。
如何测试捕获块是否捕获到适当的异常?我想尽可能少地改变源代码。
这一切都取决于什么'日志(JSONException)'方法不会因为你想验证它在你预期的时候被调用。验证这个最好的方法是使用一个测试double并验证这个调用,例如使用Mockito,[但是您必须准备好注入记录器以允许在测试中替换真正的记录器](http:// stackoverflow.com/q/9841623/1240557)。 – kryger