【问题标题】:Expect to throw exception without certain message期望在没有特定消息的情况下抛出异常
【发布时间】:2015-03-18 11:39:59
【问题描述】:

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

public class Clazz {

    private Service service;

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

我为服务创建了模拟并将其设置到 Clazz 实例中。

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

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

【问题讨论】:

    标签: java junit easymock


    【解决方案1】:

    尝试:

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

    有关更多详细信息,请访问documentation(处理异常)或this thread

    由于您重新抛出异常,您可能还希望将@Test(expected=MyException.class) 添加到测试方法中。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-08-09
        • 2015-07-11
        • 2017-02-28
        • 1970-01-01
        • 1970-01-01
        • 2015-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多