Je me demandais ce que je fais mal en testant ma fonctionnalité d'aspect. L'aspect fonctionne en production (test réussi par QA), mais j'essaie de faire passer mon test d'intégration. Voici mon code:Écrire un test d'intégration pour la fonctionnalité d'aspect au printemps
@Aspect
@Component
public class MyAspect {
@Pointcut("execution(* com.example.dao.UsersDao(..)) && args(.., restrictions)")
protected void allUsersPointcut(List<String> restrictions) {
}
@Around("allUsersPointcut(restrictions)")
public Object applyUserRestrictions(final ProceedingJoinPoint pjp, List<String> restrictions) throws Throwable {
String restrict = "Jack";
restrictions.add(restrict);
return pjp.proceed();
}
Ma méthode DAO renvoie juste une liste de tous les utilisateurs, mais quand l'aspect est utilisé, il limite ce que les utilisateurs sont affichés.
@Repository
UsersDaoImpl implements UsersDao {
...
}
Et mon UsersService:
@Service
public class UsersService implements UsersService {
@Autowired
protected UsersDAO usersDAO;
...
@Transactional(readOnly=true)
public List<String> findUsers(List<String> restrictions) {
return this.usersDAO.findUsers(restrictions);
}
}
Dans mon test unitaire que je fais ce qui suit:
@RunWith(SpringJUnit4ClassRunner.class)
public class UserTest {
@Autowired
UsersService usersService;
@Test
public void testAspect() {
List<String> restrictions = null;
List<String> users = this.usersService.findUsers(restrictions);
Assert.notNull(users);
}
J'ai aussi ajouté le confguration xml:
context:annotation-config></context:annotation-config>
<aop:aspectj-autoproxy proxy-target-class="true"/>
<context:component-scan base-package="com.example.aspect" />
Quelqu'un peut-il conseiller ce que je fais mal?
Où 'usersDao' est-il déclaré/initialisé dans votre classe de test? – slim
... et à quoi ressemble votre échec de test? Qu'est-ce que 'Assert? '(' Org.junit.Assert' n'a pas de méthode 'notNull()') – slim
@slim Excuses, j'ai édité la classe maintenant pour inclure où j'ai ajouté la déclaration de 'usersDao'. 'org.springframework.util.Assert' a une méthode' notNull() ' –