期望在没有特定消息的情况下抛出异常

时间:2015-03-18 11:40:00

标签: java junit easymock

例如,我有一个方法,我想在它抛出某个异常类型时测试用例。 MyException类中没有没有参数的构造函数。

public class Clazz {

    private Service service;

    public void method() {
        try {
            int result = service.perform();
        } catch (MyException exc) {
            throw exc;
        }
    }
}

我为服务创建了mock并将其设置为Clazz实例。

@Before
public void setUp() {
    clazz = new Clazz();
    service = createStrictMock(Service.class);
    clazz.setService(service);
}

测试应该如何?我的意思是method的测试方法应该是什么样的?

2 个答案:

答案 0 :(得分:0)

尝试:

expect(service.perform()).andThrow(new MyException(/* some params */));

有关详细信息,请转到documentation(使用例外情况)或this thread

因为您需要重新抛出异常,所以您可能还想将@Test(expected=MyException.class)添加到测试方法中。

答案 1 :(得分:0)

您可以使用以下内容(假设@setup有效)

@Test(expected = MyException.class)
public void testExceptionThrown() throws Exception(){
    Clazz subject = new Clazz();
    subject.setService(service);
    subject.method();
}