说明
我有一个单元测试,我不希望加载AOP。我没有在任何单元测试代码中加载AOP。未模拟的类没有自动装配和/或使用的任何AOP / bean /组件。
在运行单元测试时,代码假定抛出一个名为FrameworkException的自定义异常。
然而,AOP捕获异常并运行AfterThrowing建议。我不希望在单元测试中使用它。
有人可以帮忙吗?
问题
为什么仍然会调用ExceptionAspect afterThrowing()建议?它之前没有被称为。
怀疑
模拟代码是否仍然使用任何现有功能进行实例化?
尝试的决议
- 我尝试加载AnnotationConfigApplicationContext,它加载一个空的配置类。这似乎不起作用。
代码示例 - 单元测试
@Test
public void processRequest_WithRequestParameterNull_ExceptionExpected()
{
try
{
RequestWrapper requestMock = Mockito.mock(RequestWrapper.class);
Auditor auditorMock = Mockito.mock(Auditor.class);
CoreWrapper coreMock = Mockito.mock(CoreWrapper.class);
RequestAssessmentStatusHandler handler = new RequestAssessmentStatusHandler(requestMock, auditorMock,
coreMock);
handler.processRequest(null);
fail("processRequest_WithRequestParameterNull_ExceptionExpected failed.");
}
catch (FrameworkException e)
{
assertEquals(EventIds.INVALID_FRAMEWORK_PARAMETER, e.getEventId());
}
catch (Exception e)
{
fail("processRequest_WithRequestParameterNull_ExceptionExpected unhandled exception: "
+ e.getStackTrace().toString());
}
}
代码示例 - AfterThrowing建议
@Component
@Aspect
public class ExceptionAspect
{
@AfterThrowing(pointcut = "execution(* *(..))", throwing = "exception")
public void afterThrowing(JoinPoint joinPoint, Exception exception) throws Exception
{
// Do things here.
}
}