java - Database Rider 中是否有任何方法可以减少 @DataSet 配置属性的重复?
问题描述
Database Rider 中是否有任何方法可以减少@DataSet配置属性的重复?
例如,假设我们有:
@DataSet(value = "yml/test1.yml", cleanAfter = true, skipCleaningFor = {"zone_code", "product_code", "product_type", "user_type"})
public void test1() {
//...
}
@DataSet(value = "yml/test2.yml", cleanAfter = true, skipCleaningFor = {"zone_code", "product_code", "product_type", "user_type"})
public void test2() {
//...
}
在这里你可以看到cleanAfter和skipCleaningFor是重复的。这只是一个例子。skipCleaningFor 的列表可以更长。使用相同的跳过表列表进行数千个测试是一场噩梦。想象一下,我们需要在数千个地方更改此列表。
将此列表提取到某个static final
变量不是一种选择,因为注释的参数只能是真正的内联常量(您将得到编译错误)。
元数据集是减少重复的方法之一,但它们包含所有属性,并且无法覆盖某些属性(例如我的示例中的值)
合并数据集看起来很有希望,但不确定......
解决方案
似乎我想出了如何使用合并数据集来做到这一点。首先,我们的所有测试都需要一些 BaseTest ,配置为 skipCleaningFor :
@DataSet(value = "yml/empty.yml", skipCleaningFor = {"zone_code", "product_code", "product_type", "user_type"})
class BaseTest
其中 empty.yml 只是一些空数据集,以避免在测试执行期间出错。然后,在测试类中,我们把
@DbUnit(mergeDataSets = true)
@DBRider
class MyTest extends BaseTest {
@DataSet(value = "yml/test1.yml", cleanAfter = true)
public void test1() {
//...
}
@DataSet(value = "yml/test2.yml", cleanAfter = true)
public void test2() {
//...
}
就是这样 - 配置不再重复!
推荐阅读
- android - react-native run-android 命令抛出“java.net.ConnectException:连接超时”错误
- amazon-web-services - Lambda 使用 boto3 创建 EC2 机器
- vhdl - 如何在一个 FPGA 上实现多个独立的器件?
- python - 在用户指定的范围内打印 5 的复数的程序
- java - 为什么这个 mySQL 数据库没有连接到 Netbeans?
- r - 对具有系统名称的多个变量运行相同的函数(即,基于试验编号)
- javascript - 错误的错误信息打印在错误的位置
- android-studio - 在 Android Studio 中将过滤器应用于图像时遇到问题
- reactjs - 如何使用 mapDispatchToProps 和父组件将道具传递给组件?
- java - 从异步方法调用spring上下文中的bean方法真的是并发的吗?