use*_*956 10 spring scala spring-mvc spring-test
class MyWebAppInitializer extends WebApplicationInitializer {
def onStartup(servletContext: ServletContext): Unit = {
...
}
}
@RunWith(classOf[SpringJUnit4ClassRunner])
@WebAppConfiguration
@ContextConfiguration(classes = Array(classOf[MyConfig]),
initializers=Array(classOf[MyWebAppInitializer])) // <<< ERROR
class MyTest {
...
}
Run Code Online (Sandbox Code Playgroud)
抱怨:
annotation argument needs to be a constant; found: classOf[MyWebAppInitializer]
Run Code Online (Sandbox Code Playgroud)
更新:@M.Deinum指出这里只允许ApplicationContextInitializers - 所以错误是一个报告错误的类型错误匹配.
那么......我怎样才能按顺序使用自己的MyWebAppInitializer并测试其中定义的功能?
在您的上下文配置中,我没有看到您列出了上下文加载器.该AnnotationConfigWebContextLoader将定位的情况下WebApplicationInitializer在classpath中,通过添加这一点,并移除intializers(正如你所指出的,是ApplicationContextInitializers而不是WebApplicationInitializers),那么你应该所有设置.
@RunWith(classOf[SpringJUnit4ClassRunner])
@WebAppConfiguration
@ContextConfiguration(classes = {ConfigClass.class, AnotherConfigClass.class}, loader=AnnotationConfigWebContextLoader.class))
class MyTest {
...
Run Code Online (Sandbox Code Playgroud)
这是一个有效的例子
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes={WebConfiguration.class, SecurityConfig.class}, loader=AnnotationConfigWebContextLoader.class)
@ActiveProfiles("dev")
public class AppTests {
private MockMvc mockMvc;
@Autowired
protected WebApplicationContext webApplicationContext;
@Before
public void setup() {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
@Test
public void simple() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.view().name("index"));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7125 次 |
| 最近记录: |