单元测试中的java@Autowire似乎不起作用
我有一个使用Mockito和Spring 4的单元测试设置。我的测试是这样的:
@ContextConfiguration(classes = {
MyTestConfig.class,
SecurityConfig.class,
OAuth2Config.class
})
@RunWith(MockitoJUnitRunner.class)
public class ControllerAccessTests {
private MockMvc mockMvc;
@Autowired
private FilterChainProxy springSecurityFilterChain;
@Mock
private CreditCardPaymentService creditCardPaymentService;
@InjectMocks
private CreditCardRestController creditCardRestController;
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders
.standaloneSetup(creditCardRestController)
.apply(springSecurity(springSecurityFilterChain))
.build();
when(creditCardPaymentService.doPreAuthPayment(any())).thenReturn(null);
}
@Test
//.... some unit tests
配置文件如下所示:
@Configuration
public class MyTestConfig {
@Bean
public FilterChainProxy springSecurityFilterChain(){
AntPathRequestMatcher matcher = new AntPathRequestMatcher("/**");
DefaultSecurityFilterChain chain = new DefaultSecurityFilterChain(matcher);
return new FilterChainProxy(chain);
}
}
启动单元测试时springSecurityFilterChain
为空,因此配置文件MyTestConfig
似乎没有加载。有什么想法吗
干杯 汤姆
# 1 楼答案
如果您想使用mockito注释和spring注入,那么:
1)使用
@RunWith(SpringJUnit4ClassRunner.class)
2)创建一个初始化方法: