2017-11-10 5 views
0

문제는 단위 테스트를 실행하는 동안이 aspectj 클래스를 조롱 할 수 없다는 것입니다. 왜냐하면 어떻게 든 조롱하기 전에 상황에 맞게 주입되기 때문입니다.AspectJ 클래스를 조롱하는 방법?

예제 코드 -

@Aspect 
public class ExampleAspect { 

@Around ("execution * com.*.*.*(..)") 
public void printResult(ProceedingJoinPoint joinPoint) throws Throwable { 
     System.out.println("Before Method Execution"); 
     joinPoint.proceed(); 
     System.out.println("After Method Execution"); 
    } } 

테스트 클래스 -

public class ClassATest 
{ 
    @Mock 
    private ExampleAspect mockExampleAspect; 

    private ClassA testClass; 

    @Before 
    public void setup() { 
     MockitoAnnotations.initMocks(this); 
     Mockito.doNothing().when(mockExampleAspect).printResult(anyList()); 
     testClass = new ClassA(); 
    } 

    @Test 
    public void test() { 
     // before and after methodA() is executed it is intercepted by the bean of ExampleAspect 
     testClass.methodA(); 
    } 
} 

나는 성공적으로이 부분을 사용할 수있게되었습니다. 문제는 단위 테스트 케이스에 있습니다. 어떻게하면이 aspectj 클래스를 조롱하거나 단위 테스트 케이스의 aspectj를 사용할 수 없게 할 수 있습니까? 감사합니다.

답변

0

Spring 프레임 워크의 AspectJProxyFactory 클래스를 사용하여 측면을 테스트 할 수 있으므로 모의 테스트가 필요하지 않습니다. 여기

public class ClassATest { 

    private ClassA proxy; 

    @Before 
    public void setup() { 
     ClassA target = new ClassA(); 
     AspectJProxyFactory factory = new AspectJProxyFactory(target); 
     ExampleAspect aspect = new ExampleAspect(); 
     factory.addAspect(aspect); 
     proxy = factory.getProxy(); 
    } 

    @Test 
    public void test() { 
     proxy.methodA(); 
    } 
} 
+0

덕분에, 간단한 예입니다하지만 난 지금 -Advice는 측면 유형 내에서 선언해야 오류가 아래 얻을 : 귀하의 포인트 컷에 오류가 – akku

+0

방법의 기분을 상하게. 이'@Around ("실행 (* com. *. *. * (*) *)")'를 시도하십시오. –

+0

예제에서 주어진 pointcut은 오타가 있습니다. pointcut을 사용하여 실행할 수 있지만 유닛 케이스가 실패합니다. 위의 오류에 대해 한 게시물에 올랐습니다 - https://stackoverflow.com/questions/31329009/unit-test-a-method-that-is-advised-by-around-advice. 나는 MockitoJUnitRunner를 사용하고 있었고 이제는 SpringJUnit4ClassRunner를 사용하고, 테스트 설정에서 bean을 생성하기 위해 유닛 케이스를 변경했지만 bean은 생성되지 않았다. 나는 이것에 익숙하지 않고 그것을 더 시도하고있다. – akku

관련 문제