我正在尝试使用 JMockito
测试以下代码。
代码
@RunWith(MockitoJUnitRunner.class)
public class StepFunctionClientTest {
private static final String TEST_STATE_MACHINE_ARN = "testStateMachineArn";
private static final String TEST_EXECUTION_ARN = "testExecutionArn";
private ObjectNode additionalData;
private ObjectMapper objectMapper;
@Mock AWSStepFunctions mockAWSStepFunctions;
private StepFunctionClient stepFunctionClient;
@Before
public void setUp() throws Exception {
stepFunctionClient = new StepFunctionClient(mockAWSStepFunctions, TEST_STATE_MACHINE_ARN);
additionalData = TestData.getObjectNode(TestData.ADDITIONAL_DATA);
objectMapper = new ObjectMapper();
}
@Test(expected=InternalServiceException.class)
public void test() throws Exception {
StartExecutionResult result = new StartExecutionResult();
result.setExecutionArn(TEST_EXECUTION_ARN);
when(mockAWSStepFunctions.startExecution(any())).thenThrow(new JsonProcessingException("Error"){});
stepFunctionClient.startExecution(
TEST_ORDER_ID,
TEST_PAYMENT_STATUS,
null,
false);
}
}
错误
[junit] Testcase: test(com.project.orderservice.client.StepFunctionClientTest): Caused an ERROR
[junit] Unexpected exception, expected<com.project.commons.exceptions.InternalServiceException> but was<org.mockito.exceptions.base.MockitoException>
[junit] java.lang.Exception: Unexpected exception, expected<com.project.commons.exceptions.InternalServiceException> but was<org.mockito.exceptions.base.MockitoException>
[junit] at org.mockito.internal.runners.DefaultInternalRunner$1.run(Unknown Source)
[junit] at org.mockito.internal.runners.DefaultInternalRunner.run(Unknown Source)
[junit] at org.mockito.internal.runners.StrictRunner.run(Unknown Source)
[junit] at org.mockito.junit.MockitoJUnitRunner.run(Unknown Source)
[junit] Caused by: org.mockito.exceptions.base.MockitoException:
[junit] Checked exception is invalid for this method!
[junit] Invalid: com.project.orderservice.client.StepFunctionClientTest$1: Error
[junit] at com.project.orderservice.client.StepFunctionClientTest.test(StepFunctionClientTest.java:157)
我在这里缺少什么?
最佳答案
JsonProcessingException是一个受检查的异常,这意味着如果您想抛出它,该方法必须将其包含在其签名中。否则你会得到上面的错误:
Checked exception is invalid for this method!
您只能抛出此处列出的已检查异常 -> StartExecutionRequest .
或者一个RuntimeException
。
关于java - 测试 JSONProcessingException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48230893/