在@WebMvcTest中排除bean

时间:2018-03-28 07:16:47

标签: spring spring-boot

如果我有这样的主要内容:

Option Explicit

Sub CreateSheet()

Dim i As Long
Dim SheetNamesArr() As String

ReDim SheetNamesArr(100) ' redim to large size, will optimize size later

For i = 1 To ThisWorkbook.Sheets.Count
    SheetNamesArr(i - 1) = ThisWorkbook.Sheets(i).Name
Next i
ReDim Preserve SheetNamesArr(0 To i - 2) ' resize to size of populated sheet names

With ThisWorkbook
    ' using Match, means if IsError sheet name not found in current array of sheet names >> you can add it
    If IsError(Application.Match("ClientList", SheetNamesArr, 0)) Then
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "ClientList"
    End If
    ' same as previous Match
    If IsError(Application.Match("ProviderList", SheetNamesArr, 0)) Then
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "ProviderList"
    End If
End With

End Sub

我有一些@RestControllers注释类。要使用@WebMvcTest带注释的类测试它们,我必须在这些测试类中加入以下内容:

@SpringBootApplication
public class MyMain implements CommandLineRunner
{

   @Autowired
    private MyService myService;

    public static void main(String[] args)
    {
        SpringApplication.run(MyMain.class, args);
    }

    @Override
    public void run(String... args)
    {
        myService.doSomething();
    }
}

我没有使用此服务,所以我是否必须在所有@WebMvcTest注释类中添加它,或者有更好的方法来实现它?

我对以下bean也有同样的问题:

@MockBean
private MyService myService;

1 个答案:

答案 0 :(得分:0)

我认为你应该决定是否要在你想要完成的任务中使用注释。

更清楚:如果你想创建一个执行http请求的测试,那么你应该使用@WebMvcTest,因为自动配置了诸如spring security和MockMvc(official documentation)等有用的东西。

如果您只想测试没有http部分的特定方法,那么您可能不需要它。

总结:关于使用(或不使用)注释的决定将与您想要执行的测试类型相关,而不是与您的依赖性有关。