【发布时间】:2017-02-28 11:17:15
【问题描述】:
我有一个使用 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 似乎没有被加载。有任何想法吗?
干杯 汤姆
【问题讨论】:
-
使用
@RunWith(SpringJUnit4ClassRunner.class)而不是@RunWith(MockitoJUnitRunner.class)
标签: java spring unit-testing spring-mvc mockito