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");
} }
Testクラス -
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クラスを模擬するか、unit testcaseのaspectjを無効にできますか?ありがとう
おかげで、簡単な例ですが、私は今-Adviceは、アスペクトタイプの中で宣言されなければならないエラーの下に取得する:あなたのポイントカットにエラーがある – akku
方法を怒ら。この '@Around("実行(* com。*。*。*(*)*) ")'を試してください。 –
この例で与えられたポイントカットには、タイプミスがあります。私はポイントカットを使用して実行することができますが、ユニットケースは失敗しています。上記のエラーのために1つの投稿に行きました - https://stackoverflow.com/questions/31329009/unit-test-a-method-that-is-advised-by-around-advice私はMockitoJUnitRunnerを使用していましたが、ユニットケースをSpringJUnit4ClassRunnerを使用して変更し、テスト設定でBeanを作成しましたが、Beanは作成されませんでした。私はこれに新しいとそれをさらに試しています。 – akku