Автопроводка не работает в 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
                
            
        

Ответы на вопрос(3)

Ваш ответ на вопрос