为什么mockmvc测试建议在每次测试之前注入webapplicationcontext@?

slhcrj9b  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(454)

所以参考文献建议

@BeforeEach
    void setup( WebApplicationContext wac) {
        this.mockMvc = MockMvcBuilders.webAppContextSetup( wac )
            .apply( SecurityMockMvcConfigurers.springSecurity() )
            .alwaysDo( print() )
            .build();
    }

为什么不把它作为构造函数注入呢(我没有试过这个,我只是假设它不会马上爆炸)

@Autowired
    MyControllerTest(
        @NonNull WebApplicatonContext wac
    ) {
        this.mockMvc = MockMvcBuilders.webAppContextSetup( wac )
            .apply( SecurityMockMvcConfigurers.springSecurity() )
            .alwaysDo( print() )
            .build();
    }
eagi6jfj

eagi6jfj1#

在使用junitjupiter时,是选择构造函数注入、方法注入还是字段注入是一个需要考虑的问题 SpringExtension .
参考手册中的示例简单地展示了使用 @BeforeEach 方法,因为许多人都熟悉在“before”方法中执行测试设置。
您还可以设置 MockMvc 示例,并且您可以 mockMvc 字段 final 如果你愿意的话。
在这次提交中,我在spring自己的测试套件中更新了一个测试类,以在实践中演示其中的一些技术。
请注意,测试类构造函数不需要用 @Autowired 如果它接受一个与 ApplicationContext .

相关问题