@WebMvcTest 可以有两个控制器吗

val*_*ezu 3 java web-testing

我正在尝试测试两个不同的控制器类,因为我想测试两个类中的一个方法,并且我将使用 @WebMvcTest,我的问题是有没有办法将模拟注入两个类,可能是这样的?

@WebMvcTest(HomeController.class , BookController.class)
public class ControllerTest{
Run Code Online (Sandbox Code Playgroud)

当然这会导致错误,所以这是否意味着在使用 @WebMvcTest 时我们只能测试一个控制器中的方法?每班

dav*_*xxx 7

@WebMvcTest接受Class<?>[]value()

public @interface WebMvcTest {
  ...
    @AliasFor("controllers")
    Class<?>[] value() default {};
  ...
}
Run Code Online (Sandbox Code Playgroud)

传递单个值(可能只是因为它是注释)或数组是如此合法。
您的问题是您没有使用正确的语法来声明文字数组。
尝试 :

@WebMvcTest({HomeController.class, BookController.class})
public class ControllerTest{
Run Code Online (Sandbox Code Playgroud)

请注意,通过注释您的测试类@WebMvcTest而不评估注释声明中的任何参数:

@WebMvcTest
public class ControllerTest{
Run Code Online (Sandbox Code Playgroud)

所有 Spring 控制器都添加到 Spring 上下文中。