如何在带有catch-exception的构造函数中期待异常?

时间:2014-07-23 19:52:35

标签: java unit-testing catch-exception

是否可以在catch-exception的构造函数中期待异常?无法弄清楚语法。对于我正在写的方法

catchException(instance).method();

然后,例如

assert caughtException() instanceof IndexOutOfBoundsException;

我应该为

写些什么
new MyClass();

1 个答案:

答案 0 :(得分:2)

使用catch-exception库,recommended way将使用构建器模式:

import com.google.common.base.Supplier; // Google Guava

Supplier<MyClass> builder = new Supplier<MyClass>() {
   @Override
    public MyClass get() {
       return new MyClass();
   }
};
verifyException(builder).get();

如果您使用JUnit 4进行单元测试,则可以使用Expected Exceptions

public class TestClass {  

    @Test(expected = MyException.class)  
    public void createObjectTest() {  
        MyClass object = new MyClass();  
    }  
}  

在旧版本的JUnit中,您只需捕获异常:

public class TestClass {  

    @Test  
    public void createObjectTest() {  
        try {  
            MyClass obj = new MyClass();  

            fail("An exception should be thrown!");  

        } catch (MyException e) { 
        }  
    }  
}