Das Problem ist, dass ich nicht in der Lage bin, diese Aspektklasse während des Komponententests zu verspotten, weil sie irgendwie in den Kontext injiziert wird, bevor ich mich darüber lustig mache.Wie AspectJ Klasse zu verspotten?
Beispiel-Code -
@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-Klasse -
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();
}
}
Ich bin in der Lage erfolgreich diesen Aspekt zu verwenden. Das Problem liegt beim Unit-Testfall. Wie kann ich diese aspectj Klasse verspotten oder aspectj für Unit Testcase deaktivieren? Danke
Danke, aber ich unten Fehler bekommen muss -Beratung innerhalb eines Aspektes Typ deklariert werden: Offending Methode – akku
Ihre pointcut einen Fehler aufweist. Probieren Sie diese '@Around (" Ausführung (* com. *. *. * (..))) ")'. –
Der im Beispiel angegebene Pointcut hat einen Tippfehler. Ich bin in der Lage, mit dem Pointcut zu laufen, aber der Unit Case schlägt fehl. Es ist ein Post für den obigen Fehler aufgetreten - https://stackoverflow.com/questions/31329009/unit-test-a-method-that-is-advised-by-around-advice. Ich benutzte MockitoJUnitRunner und ändere jetzt den Unit Case, um SpringJUnit4ClassRunner zu verwenden und Bean in meiner Testkonfiguration zu erstellen, aber die Bean wurde nicht erstellt. Ich bin neu und versuche es weiter. – akku