Автопроводка не работает в Spring 3.1.2, JUnit 4.10.0
Использование Spring 3.1.2, JUnit 4.10.0 и довольно новое для обеих версий. Я'у меня проблема, что я могузаставить работать аннотацию на основе аннотаций.
Ниже приведены два примера, один из которых не использует аннотации, который работает нормально. А второй использует аннотацию, которая нене работает, и я нене могу найти причину. Я следовал образцам Spring-MVC-теста в значительной степени.
За работой:
package com.company.web.api;
// imports
public class ApiTests {
@Test
public void testApiGetUserById() throws Exception {
ApplicationContext ctx = new ClassPathXmlApplicationContext("/com/company/web/api/ApiTests-context.xml");
UserManagementService userManagementService = (UserManagementService) ctx.getBean("userManagementService");
ApiUserManagementController apiUserManagementController = new ApiUserManagementController(userManagementService);
MockMvc mockMvc = standaloneSetup(apiUserManagementController).build();
// The actual test
mockMvc.perform(get("/api/user/0").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk());
}
}
провал, так какuserManagementService
имеет значение null, не получает автосвязь:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration // should default to ApiTests-context.xml in same package
public class ApiTests {
@Autowired
UserManagementService userManagementService;
private MockMvc mockMvc;
@Before
public void setup(){
// SetUp never gets called?!
}
@Test
public void testGetUserById() throws Exception {
// !!! at this point, userManagementService is still null - why? !!!
ApiUserManagementController apiUserManagementController
= new ApiUserManagementController(userManagementService);
mockMvc = standaloneSetup(apiUserManagementController).build();
// The actual test
mockMvc.perform(get("/api/user/0").accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk());
}
}
Обратите внимание, что оба вышеупомянутых тестовых класса должны использовать одну и ту же конфигурацию контекста, и там определено userManagementService.
ApiTests-context.xml:
${hibernate.dialect}
${hibernate.show_sql}
${hibernate.generate_statistics}
и UserManagementService (интерфейс), а также UserManagementServiceImpl имеет@Service
аннотаций.
Два незначительных вопроса / наблюдения: setup () никогда не вызывается, даже если у него есть аннотация @Before. Кроме того, я заметил, что мои методы испытаний нене будет казнен / признан, если они неначать с именитестовое задание', что не так, хотя со всеми образцами Spring-MVC-испытаний я видел.
pom.xml:
org.junit
com.springsource.org.junit
4.10.0
test
Обновить:
Проблема возникает только когда я запускаю тесты из maven; Это'Ничего страшного, когда я запускаю тест изнутри своей IDE (IntelliJ IDEA).
org.apache.maven.plugins
maven-surefire-plugin
2.12.3
**/*Tests.java