Są trzy różne rzeczy do testowania tutaj:
- Czy Twoje punkty przekroju dopasowania czego można się spodziewać?
- Czy Twoja rada odnosi się do właściwego cięcia punktowego?
- Czy porady są zgodne z oczekiwaniami?
Aby przetestować punkty, można zdefiniować niektóre typy testów, które mają ten sam podpis pakietu/typu/metody, co zamierzone "rzeczywiste" cele, a następnie zdefiniować poradę testową względem punktów wskazujących, aby upewnić się, że są one dopasowane (również zdefiniuj niektóre typy, które nie powinny być dopasowane, aby zapewnić, że punkty nie są zbyt liberalne). Zwykle robię to, definiując porady dotyczące wywołania zwrotnego do metody w celu testowym, ustawienia flagi, a następnie stwierdzenia, że flaga została ustawiona.
Aby przetestować tę poradę, jest trudniejsze. Mam tendencję do delegowania całego ciała doradczego do normalnej metody, a następnie skupienia się na testowaniu metody zamiast porady.
Jeśli to zrobiłeś, jedyną brakującą częścią jest to, że twoja rada jest stosowana do odpowiednich wskazówek i faktycznie wywołuje metody. Jeśli uważasz, że może to być problem, możesz to zrobić, tworząc inny aspekt, który pasuje do wykonania porady i ustawia flagę, aby pokazać oczekiwaną metodę delegowaną, która została wywołana przez aspekt, i zastąpić tę metodę, aby nic nie robić.
Czy możesz podać więcej szczegółów? – Javatar
Wydaje mi się, że normalne jest tworzenie testu pół-integracji, gdy tyle logiki jest faktycznie generowanych przez środowisko wykonawcze. – Gepsens
Wywołujesz metodę, która powinna wywoływać metody aspektu, ale nigdy nie odpowiedziałeś, jak sprawdzić, czy metody aspektu są wywoływane. @Javatar Myślę, że to szczegół, którego szukasz? Zgaduję, że Twój przykładowy aspekt zawsze generuje wyjątek ApplicationSecurityException? A co z prawidłową inwokacją metody? – Jorge