Grails集成测试-如何使用不同的数据源进行不同的测试



我正试图找到一种方法,对内存中的数据库(H2)执行某些集成测试,对我们的Oracle测试数据库执行其他集成测试。也许这是我有限的测试编写经验,但似乎有些测试(如搜索查询)更适合在内存中进行,因为我可以控制查询的数据集,而其他测试(如测试事务/持久性)将从违背我们的REAL模式和DB(Oracle)中受益。

我能想到两种方法,但都不知道如何实现:

  1. 添加一个新的测试阶段,这样我就可以在mem中进行集成测试和集成测试(使用oracle),并在不同的阶段运行不同的测试,并为不同的DB配置每个测试
  2. 让每个测试控件使用哪个数据源

我更喜欢第一个作为它的清洁器,并且我不必用逻辑来控制它使用的数据源来污染我的测试。

另外,第二种方法不是简单地按域设置不同的数据源——我想在针对不同数据库的不同测试中重用同一个域。

任何想法都值得赞赏,如果你已经做到了,请分享!我们确实使用SPOCK。

这是Luke Daley写的一篇关于添加自定义测试阶段/类型的博客文章。有人实施过吗?现在我已经读过了,对术语有了更好的理解,我想我想做的是建立新的类型,而不是阶段。不幸的是,由于我们使用的是spock,我们基本上已经使用了自定义类型。尽管我们可以将spock保留为两种类型之一,并可能创建一个"spock-IN-EM"类型,尽管这可能需要重新定义spock类型,但这可能不起作用。欢迎任何建议。我想说的是,这种情况似乎经常出现(我已经在其他论坛上回答了其他人提出的这个问题),应该有一个更简单的方法来解决它。

还有一个发现。有一个用于spock的环境插件,它添加了一个注释,使测试仅针对注释的环境运行。它重用了spock被忽略的测试能力,并且非常小、简单、干净。唯一的不利因素是斯波克,这对我们集团来说不是问题。

定义阶段的一种更简单的方法会很好——就像命名约定一样。如果能够只使用目录命名约定(如test//)来定义阶段/类型,那就太好了。只要创建文件夹就可以了。然后,您可以通过在运行测试应用程序时在参数中显式设置phase/type/env来控制执行。

相关内容

  • 没有找到相关文章

最新更新