Создание нового экземпляра bean после каждого модульного теста

Я новичок в среде Spring, и у меня есть вопрос о его возможностях внедрения зависимостей с использованием контекста Spring.

Это класс, для которого я пытаюсь написать интеграционный тест:

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));
}

Все тесты, однако, не говорят Я вызывал этот метод несколько раз. Я могу только предположить, что bean-компонент UserService создается один раз в начале всех тестов, но не перезагружается после каждого теста.

В моей тестовой конфигурации я использую следующий XML-код, чтобы решить, какие bean-компоненты внедрять:

<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>

Есть идеи?

8
задан geoffreydv 10 February 2012 в 07:47
поделиться