bestsource

유닛 테스트 Spring @Around AOP

bestsource 2023. 8. 12. 10:31
반응형

유닛 테스트 Spring @Around AOP

저는 봄 수업의 대부분을 봄 "물건"을 할 필요 없이 유닛 테스트를 할 수 있습니다.

Spring을 사용하지 않아도 @Before Advision 방법을 단위 테스트할 수 있습니다.

코드 예제:

@Before("execution(* run(..)) && " + "" +
          "target(target) && " +
        "args(name)")
public void logName(Object target, String name) {
    logger.info("{} - run: {}", target, name);
}

예제 검정:

@Test
public void testLogName() {
    aspect.setLogger(mockLogger);
    aspect.logName(this,"Barry");
    assertTrue(mockLogger.hasLogged("TestAspect - run: Barry"));
}

그러나 @Around 조언은 ProceedingJoinPoint 개체를 처리합니다.

@Around("com.xyz.myapp.SystemArchitecture.businessService()")
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
   // start stopwatch
   Object retVal = pjp.proceed();
   // stop stopwatch
   return retVal;
 }

ProceedingJoinPoint 개체를 인스턴스화하는 방법을 모르겠습니다.Spring 애플리케이션 컨텍스트 전체를 시작하지 않고 이 클래스를 테스트하려면 어떻게 해야 합니까?

프로그래밍 방식으로 프록시를 만들어 스프링 측면을 테스트할 수 있습니다.

MyInterface target = new MyClass();
AspectJProxyFactory factory = new AspectJProxyFactory(target);
MyAspect aspect = new MyAspect(arg);
factory.addAspect(aspect);
MyInterface proxy = factory.getProxy();

그러면 메소드를 호출할 수 있습니다.proxy그리고 주장을 합니다.aspect,proxy그리고.target.

언급URL : https://stackoverflow.com/questions/11436600/unit-testing-spring-around-aop-methods

반응형