测试JSONProcessingException

时间:2018-01-12 17:05:31

标签: java json unit-testing mockito

我正在尝试使用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)

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

JsonProcessingException是一个经过检查的异常,这意味着如果要抛出它,该方法必须将其置于其签名中。否则你会得到上面的错误:

  

此方法的已检查异常无效!

您只能抛出此处列出的已检查例外 - &gt; StartExecutionRequest

RuntimeException