Database Rider 中有什么方法可以减少@DataSet 配置属性的重复?
Is there any way in Database Rider to reduce duplication of @DataSet configuration properties?
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
变量不是一个选项,因为注释的参数只能是真正的内联常量(你会得到编译错误)。
Meta datasets 是减少重复的方法之一,但它们包括所有属性,并且不可能覆盖某些属性(例如我的示例中的 value )
Merge datasets 看起来很有希望,但不确定...
我似乎想出了如何使用合并数据集来做到这一点。
首先,我们需要一些 BaseTest 用于我们所有的测试,配置为 skipCleaningFor :
@DataSet(value = "yml/empty.yml", skipCleaningFor = {"zone_code", "product_code", "product_type", "user_type"})
class BaseTest
其中 empty.yml 它只是一些空数据集,以避免在测试执行期间出错。
然后,在测试class中,我们把
@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() {
//...
}
就是这样 - 配置不再重复!
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
变量不是一个选项,因为注释的参数只能是真正的内联常量(你会得到编译错误)。
Meta datasets 是减少重复的方法之一,但它们包括所有属性,并且不可能覆盖某些属性(例如我的示例中的 value )
Merge datasets 看起来很有希望,但不确定...
我似乎想出了如何使用合并数据集来做到这一点。 首先,我们需要一些 BaseTest 用于我们所有的测试,配置为 skipCleaningFor :
@DataSet(value = "yml/empty.yml", skipCleaningFor = {"zone_code", "product_code", "product_type", "user_type"})
class BaseTest
其中 empty.yml 它只是一些空数据集,以避免在测试执行期间出错。 然后,在测试class中,我们把
@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() {
//...
}
就是这样 - 配置不再重复!