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를 사용할 수 없게 할 수 있습니까? 감사합니다.
덕분에, 간단한 예입니다하지만 난 지금 -Advice는 측면 유형 내에서 선언해야 오류가 아래 얻을 : 귀하의 포인트 컷에 오류가 – akku
방법의 기분을 상하게. 이'@Around ("실행 (* com. *. *. * (*) *)")'를 시도하십시오. –
예제에서 주어진 pointcut은 오타가 있습니다. pointcut을 사용하여 실행할 수 있지만 유닛 케이스가 실패합니다. 위의 오류에 대해 한 게시물에 올랐습니다 - https://stackoverflow.com/questions/31329009/unit-test-a-method-that-is-advised-by-around-advice. 나는 MockitoJUnitRunner를 사용하고 있었고 이제는 SpringJUnit4ClassRunner를 사용하고, 테스트 설정에서 bean을 생성하기 위해 유닛 케이스를 변경했지만 bean은 생성되지 않았다. 나는 이것에 익숙하지 않고 그것을 더 시도하고있다. – akku