У меня возникли проблемы с моими тестовыми примерами после того, как я ввел @Autowired в одном из тестируемых классов.
Мой тестовый пример теперь выглядит так:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"/applicationContext.xml", "/spring-security.xml"})
public class StudentRepositoryTest extends AbstractDatabaseTestCase {
private StudentRepository studentRepository;
private CompanyRepository companyRepository;
private Student testStudent;
private Company testCompany;
@Before
public void setUp() {
studentRepository = new StudentRepository();
studentRepository.setJdbcTemplate(getJdbcTemplate());
testStudent = Utils.testStudentNoApplication();
}
@Test
....
}
StudentRepository теперь выглядит следующим образом:
@Service
public class StudentRepository extends AbstractRepository<Student> {
...
private PasswordEncoder passwordEncoder;
private MailService mailService;
public StudentRepository() {
// TODO Auto-generated constructor stub
}
@Autowired
public StudentRepository(MailService mailService, PasswordEncoder passwordEncoder) {
this.mailService = mailService;
this.passwordEncoder = passwordEncoder;
}
Очевидно, этот тестовый случай выиграл´больше не работает.Но какие изменения мне нужно внести в тестовый сценарий, чтобы аннотация @Autowired была выбрана тестовым примером?
РЕДАКТИРОВАТЬ:
Я теперь обновил свой setUp () для этого(Мне нужен кодировщик паролей, чтобы избежать нулевого пароля):
@Before
public void setUp() {
//studentRepository = new StudentRepository();
studentRepository = new StudentRepository(mock(MailService.class), ctx.getAutowireCapableBeanFactory().createBean(ShaPasswordEncoder.class));
studentRepository.setJdbcTemplate(getJdbcTemplate());
testStudent = Utils.testStudentNoApplication();
}
Мой тестовый сценарий теперь работает нормально, но мой набор тестов завершается ошибкой с NullPointerException.Я предполагаю, что ApplicationContext по какой-то причине не запускается автоматически при запуске testuite?