gpt4 book ai didi

java - Mockito 拒绝抛出已检查的异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:55:59 31 4
gpt4 key购买 nike

我正在使用 Mockito 进行单元测试,但我遇到了在侦测对象上引发异常的问题。我之前在这个对象上做过这个(在不同的测试用例中并且它有效)。这是测试代码:

@Test
public void callInitiated_FsmInitializationException() throws FsmInitializationException, Exception {
MocSbb moc = Mockito.spy(testObj);

MocTracer tracer = Mockito.mock(MocTracer.class);
Mockito.doReturn(tracer).when(moc).getTracer();

CAP2InitialDPArg idp = Mockito.mock(CAP2InitialDPArg.class);
MocFsm mocFsm = Mockito.mock(MocFsm.class);
//Mockito.doReturn(mocFsm).when(moc).getSs7Fsm();

TicketingLocalInterface ticketing = mockTicketingLocalInterface();
CAP2InitialDPArgWrap idpWrap = Mockito.mock(CAP2InitialDPArgWrap.class);
PowerMockito.whenNew(CAP2InitialDPArgWrap.class).withArguments(idp, tracer).thenReturn(idpWrap);

MocSession mocSession = Mockito.mock(MocSession.class);
Mockito.doReturn(mocSession).when(moc).getMocSession();

Mockito.when(moc.getSs7Fsm()).thenThrow(new FsmInitializationException()); ////HERE'S THE PROBLEM

moc.callInitiated(idp);

verify(moc).getFailedFsm();
}

这里是应该抛出异常的方法:

protected MocFsm getSs7Fsm() throws FsmInitializationException {
mocFsm.setContextProvider(getMocLocalObject());
return mocFsm;
}

我在测试执行期间遇到的错误如下所示:

Testcase: callInitiated_FsmInitializationException(com.nsn.as.ccs.moc.sbb.MocSbbTest):  Caused an ERROR

Checked exception is invalid for this method!
Invalid: com.nsn.as.ccs.moc.fsm.FsmInitializationException
org.mockito.exceptions.base.MockitoException:
Checked exception is invalid for this method!
Invalid: com.nsn.as.ccs.moc.fsm.FsmInitializationException
at com.nsn.as.ccs.moc.sbb.MocSbbTest.callInitiated_FsmInitializationException(MocSbbTest.java:1194)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:322)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:309)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:112)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:73)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:297)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:222)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:161)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:135)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:133)
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:112)
at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:57)

有谁知道为什么它在这种情况下不起作用?

最佳答案

我终于找到了解决这个问题的方法。

我们使用了一个匿名类来扩展原始的 Sbb 类,该类已经过测试,在这个扩展类中,上述方法的实现被更改,throws 表达式被删除,这导致了问题.

我应该更仔细地阅读我同事的代码。

关于java - Mockito 拒绝抛出已检查的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6647957/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com