@Test
public void testInvoke_multi_times_on_same_thread() throws Throwable {

    // do setup for test case.
    // nothing.
    BusinessException occurException = new BusinessException(ResultMessages
            .error().add("e.cm.xxx1", "args1", "args2"));
    when(mockMethodInvocation.proceed()).thenThrow(occurException);
    // do test.
    // 1st intercept.
    try {
        testTarget.invoke(mockMethodInvocation);
        fail("don't occur BusinessException.");
    } catch (BusinessException e) {
        // do assert.
        assertThat(e, is(occurException));
    }
    // 2nd intercept.
    try {
        testTarget.invoke(mockMethodInvocation);
        fail("don't occur BusinessException.");
    } catch (BusinessException e) {
        // do assert.
        assertThat(e, is(occurException));
    }
    // do assert.
    verify(mockExceptionLogger, times(2)).warn(occurException);
    verify(mockExceptionLogger, times(2)).warn(any(Exception.class));
}