如何使用自定义WebApplicationInitializer运行测试?

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 {

...

}

投诉:

annotation argument needs to be a constant; found: classOf[MyWebAppInitializer]

更新:@M。Deinum指出,此处仅允许使用ApplicationContextInitializers-因此该错误是一个错误报告的类型mismatch。

那么…如何才能按顺序使用自己的MyWebAppInitializer并测试其中定义的功能?

回答:

在您的上下文配置中,我看不到您列出了上下文加载器。该AnnotationConfigWebContextLoader将定位的情况下WebApplicationInitializer在classpath中,通过添加这一点,并移除intializers(正如你所指出的,是ApplicationContextInitializers而不是WebApplicationInitializers),那么你应该所有设置。

@RunWith(classOf[SpringJUnit4ClassRunner])

@WebAppConfiguration

@ContextConfiguration(classes = {ConfigClass.class, AnotherConfigClass.class}, loader=AnnotationConfigWebContextLoader.class))

class MyTest {

...

这是一个有效的例子

@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"));

}

}

以上是 如何使用自定义WebApplicationInitializer运行测试? 的全部内容, 来源链接: utcz.com/qa/427260.html

回到顶部