我使用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
似乎没有被加载。有任何想法吗?
干杯 汤姆
答案 0 :(得分:6)
如果你想使用mockito注释和弹簧注射:
1)使用@RunWith(SpringJUnit4ClassRunner.class)
2)创建一个init方法:
@Before
public void init(){
MockitoAnnotations.initMocks(this);
}