我剛接觸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