我刚接触Spring框架,并对使用Spring Context的依赖注入功能有疑问。在每个单元测试之后创建一个bean的新实例
这是我试图写一个集成测试类:
public class UserService {
private Validator validator;
private UserRepository userRepository;
private Encryptor encryptor;
private MailService mailService;
...
public void registerUser(User user) {
user.setPassword(encryptor.encrypt(user.getPassword()));
Errors errors = new BindException(user, "user");
validator.validate(user, errors);
if (errors.getErrorCount() == 0) {
userRepository.addUser(user);
mailService.sendMail(user.getEmail());
}
}
在我的测试(使用的Mockito)我要保证四个项目被称为所以我创建这样的测试:
public void testRegisterCallsValidateInValidator() {
userService.registerUser(testUser);
verify(userService.getValidator(), times(1)).validate(any(User.class), any(Errors.class));
}
但是所有测试都失败,说我多次调用该方法。我唯一的猜测是UserService bean在所有测试开始时被创建一次,但在每次测试后都不会重新加载。
在我的测试配置中我用下面的XML来决定要注入其中豆类:
<bean id="userService" class="be.kdg.coportio.services.UserService">
<property name="validator" ref="validator"/>
<property name="userRepository" ref="userRepository"/>
<property name="encryptor" ref="encryptor"/>
<property name="mailService" ref="mailService"/>
</bean>
任何想法?
你有多种测试方法,或只是你粘贴的那个? – ggreiner 2012-02-10 07:50:30
我有四种测试方法(其中1个已粘贴)。我得到三个失败的测试,说我已经调用了我试图分别测试2,3和4次的方法。 – geoffreydv 2012-02-10 07:53:48