【发布时间】:2021-04-29 11:08:10
【问题描述】:
我正在寻找一种通过昂贵的设置优化运行多个参数化测试的方法
我当前的代码是这样的
@ParameterizedTest
@MethodSource("test1CasesProvider")
void test1(String param) {
// expensive setup code 1
// execution & assertions
}
@ParameterizedTest
@MethodSource("test2CasesProvider")
void test2(String param) {
// expensive setup code 2
// execution & assertions
}
但是在这种情况下,每个测试用例都会运行昂贵的设置,这不是很好
我可以将此测试拆分为两个单独的测试并使用@BeforeAll,然后安装程序在每个测试中只运行一次,但我正在寻找一种方法将两种情况都保留在一个测试中
【问题讨论】:
-
我的第一个问题是“为什么你有这么昂贵的设置?”。这是一种气味,表明您正在测试的方式没有问题。感觉考试是事后才想到的
-
@Bart 我不知道我是否同意你的看法!我认为这取决于您要测试的内容,尤其是在集成测试中。
-
那些测试是针对搜索引擎的,可能整个测试应该有一个包含所有测试数据的设置方法,但是我们正在添加新的搜索字段,这些字段需要新的复杂数据来验证边界情况,因此将其全部添加在一种设置中可能会影响其他已经存在的测试
标签: java unit-testing integration-testing junit5 junit-jupiter