微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Database Rider中有什么方法可以减少@DataSet配置属性的重复?

如何解决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","user_type"})
public void test2() {
  //...
}

在这里您可以看到 cleanAfter skipCleaningFor 重复。这只是一个例子。 skipCleaningFor的列表甚至可以更长。使用相同的已跳过表列表进行数千个测试是一场噩梦。想象我们需要在数千个地方更改此列表。

将列表提取到某个static final变量中不是一种选择,因为注释的参数只能是真正的内联常量(您会得到编译错误)。

Meta datasets是减少重复的方法之一,但它们包含ALL属性,并且无法覆盖某些属性(例如本例中的 value

Merge datasets看起来很有希望,但不确定...

解决方法

似乎我弄清楚了如何使用合并数据集来做到这一点。 首先,我们需要使用skipCleaningFor的配置对所有测试进行一些BaseTest:

@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() {
     //...
   }

就是这样-配置不再重复!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。