Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在使用JUnit执行单元测试时,在控制台中记录捕获到异常?_Java_Unit Testing_Exception_Junit4 - Fatal编程技术网

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

Java 为什么在使用JUnit执行单元测试时,在控制台中记录捕获到异常?,java,unit-testing,exception,junit4,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 n

我是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 .......

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

从语法上讲,throws关键字不能应用于类级别,只能应用于方法级别。另外,你的方法名testIfThrowsException应该有括号。@aribeiro-好的,我知道他在做什么。将捕获
JSONException
,并抛出
myxception
。因此,他得到的例外不是来自该方法,因为该方法不可能抛出一个
JSONException
它唯一可能来自的地方是
newmyclass()
位,或者他遗漏了一些重要的东西。@mikeb,我同意你的看法。一定缺少什么。你确定这是你的实际代码失败了吗?它“按预期”对我有效-即没有记录任何异常。您确定JSONException在抛出MyException之前没有被异常处理程序中的某个对象记录吗?@sisyphus您是对的MyException的构造函数导致了日志消息。很抱歉,我太专注于自己的代码了,以至于之前我并没有检查MyException的实现。