单元测试的捕获与抛出异常

问题描述 投票:0回答:2

在下面的代码中,ClassToTest.throwsException()引发了一个已检查的异常。我的偏好是向JUnit方法签名添加throws异常,而不是在try catch中包装引发异常的代码。这种偏好仅基于我认为更整洁的事实。我在这里违反编码规范吗?从测试的角度来看,在测试方法中引发异常与try / catch的功能是否有所不同?

import org.junit.Test;

public class TestingClass {


    @Test
    public void getDataTest() throws Exception {

        new ClassToTest().throwsException();

    }

}

versus:

import org.junit.Test;

public class TestingClass {


    @Test
    public void getDataTest() {

        try {
            new ClassToTest().throwsException();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

ClassToTest.java:

public class ClassToTest {

    public void throwsException() throws Exception {

    }
}
java junit
2个回答
1
投票

如果不希望抛出Exception,则在代码中添加try-catch块没有任何额外的好处。更糟糕的是,仅添加try-catch块将导致测试通过。要使测试失败,必须向fail()添加一个调用才能使测试实际失败。这可能是错误的来源(如果忘记了呼叫fail()的话)。


0
投票

简单地将Exception子句添加到方法声明中,并使异常冒泡,如this article over at Baelung中所写:

© www.soinside.com 2019 - 2024. All rights reserved.