错误
通过查看WebStatFilter源代码发现,有个变量竟然是null,而该变量是在Filter#init()进行赋值的,说明spring boot单元测试没有对Filter进行初始化,但是Filter在请求过程中被执行了,因此抛出了空指针异常。官方给出的文档中对@SpringBootTest注解,有详细的说明,我们可以指定webEnvironment属性,默认是WebEnvironment.MOCK,它是不会对Filter、Servlet进行初始化的,因此我们在使用单元测试的时候要注意了。好在,spring为我们提供了WebEnvironment.RANDOM_PORT、WebEnvironment.DEFINED_PORT,可以自动为我们初始化Filter、Servlet。
具体解决示例如下:
@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
class BrandControllerTest {
}