java - 为什么 MockMvc 测试建议注入 WebApplicationContext @BeforeEach 测试?
问题描述
所以参考文档建议
@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();
}
解决方案
在将 JUnit Jupiter 与SpringExtension
.
参考手册中的示例仅显示了使用方法的一种@BeforeEach
方法,因为许多人都熟悉在“之前”方法中执行测试设置。
您还可以在测试类构造函数中设置您的MockMvc
实例,并且您可以根据需要创建您的mockMvc
字段final
。
在本次提交中,我更新了 Spring 自己的测试套件中的一个测试类,以在实践中演示其中的一些技术。
请注意,如果测试类构造函数@Autowired
接受一个与ApplicationContext
.
推荐阅读
- c++ - glVertexAttribDivisor 不存在
- svn - SVN - 是否可以以交互方式在终端中添加/删除多个文件?
- kubernetes - Apache Cassandra:无法在 Kubernetes/Ubuntu 服务器上使用任何种子进行八卦
- python - 根据 argparser 参数在运行时更新 YAML 配置文件
- arrays - Postgres数据库中的json查询
- java - 如何通过程序创建变量来计算瓷砖的数量
- extjs - 带有锁定列的 Ext.grid.Tree?
- android - 在颤振中使用摄像头插件时,我的前置摄像头无法正常工作
- javascript - 使用 Javascript + Regex 获取字符串中的第二个数字?
- php - 在没有 javascript 的任何标签内添加 html