在使用JUnit执行单元测试时,为什么捕获的异常会在控制台中记录?

时间:2016-03-16 13:38:13

标签: java unit-testing exception junit4

我是JUnit的新手,我正在尝试为以下课程编写单元测试:

class MyClass {
    public void throwException() throws MyException {
        try {
            JSONObject json = new JSONObject();
            json.getString("param");
        } catch(JSONException e) {
            throw new MyException(e);
        }
    }
}

我的用例是这样的,我只能从throwException()方法抛出MyException(我的Exception类的包装器)。我使用JUnit为此编写了一个测试用例,如下所示:

@Test(expected = MyException.class)
public void testIfThrowsException throws MyException {
    MyClass myClass = new MyClass();
    myClass.throwException();
}

当我运行此单元测试用例时,测试通过但仍然在控制台中记录了JSONException。控制台消息:

- param parameter is not string
org.json.JSONException: JSONObject["param"] not found.
    at org.json.JSONObject.get(JSONObject.java:498)
    at org.json.JSONObject.getString(JSONObject.java:669)
    at .......

这是预期的行为还是我在单元测试的实现中做错了什么。如果这是预期的,那么我怎么能抑制这样的控制台消息。

0 个答案:

没有答案