JMockit 期望 API:如何在方法/构造函数调用时抛出异常
Posted
技术标签:
【中文标题】JMockit 期望 API:如何在方法/构造函数调用时抛出异常【英文标题】:JMockit Expectation API : How to throw an exception upon method/constructor invocation 【发布时间】:2015-03-11 16:07:32 【问题描述】:在使用 JMockit 时,我想在 构造函数调用 上抛出一个 异常,如下所示:
new Expectations()
new FirefoxDriver();//Want to throw IllegalStateException here but how?
;
【问题讨论】:
【参考方案1】:要为记录的期望指定结果,请将其(要返回的值或要抛出的异常)分配给 result
字段:
new Expectations()
someMockedMethodOrConstructorInvocation(...); result = new IllegalStateException();
;
【讨论】:
以上我都试过了;但不是模拟,而是调用实际的构造函数并创建对象:( 你只能在被mocked的方法或构造函数上记录期望;通常,这意味着您使用模拟注释之一声明模拟字段或模拟参数,例如“@Mocked
”。否则,实际的方法或构造函数确实会被执行。
@Rogério:将模拟字段添加到您的示例中会很好。 :-) 我 认为 对于 Affan 的情况,它应该只是 new Expectations(FirefoxDriver.class) ...;
,但对 JMockit 还不够自信......也许将 @Test(expected = IllegalStateException)
添加到方法中,然后在之后调用 new FirefoxDriver();
期望障碍?【参考方案2】:
我们应该在测试用例的方法中添加要模拟的类作为参数。使用结果,我们可以模拟方法的结果。
@Test
public void testCase(@Mocked final ClassToMock classToMockObject)
new NonStrictExpectations()
classToMockObject.methodToMock();result=NullPointerException();
;
classToMockObject.methodToMock(); //calling the method to throw exception
【讨论】:
以上是关于JMockit 期望 API:如何在方法/构造函数调用时抛出异常的主要内容,如果未能解决你的问题,请参考以下文章