【问题标题】:How to run your JUnit tests on two different databases如何在两个不同的数据库上运行 JUnit 测试
【发布时间】:2014-11-03 15:01:33
【问题描述】:

我想使用两个不同的@ContextConfiguration 运行相同的测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/test/oracle.xml")
public class OracleTest extends BaseTest {}

对于另一个数据库也有类似的副本,我可以为每个数据库运行抽象类 BaseTest 中的所有测试。这种方法有两个缺点:

  1. 我的课程数量是原来的三倍
  2. 我只能通过转到 OracleTest 类并执行所有测试来执行基类中的测试

有没有更好的方法来做到这一点?我尝试了几个注释(@ContextHierarchy、@Transactional 等),但由于我在不真正理解它们在做什么之前从未使用过它们。一种可能性似乎是 DbUnit,但我不知道这有什么帮助。

【问题讨论】:

  • 好吧,我认为你真的别无选择。无论如何,您的解决方案还不错:)

标签: java junit annotations junit4


【解决方案1】:

单元测试类的数量比使用测试 Spring 上下文少得多。 我认为测试 Spring 上下文是反模式。您的集成测试不是测试生产布线。因此,您的生产环境未经过测试。尽量避免创建测试上下文,而是在集成测试中使用生产 Spring 配置。

您必须有一些机制来替换生产中的数据库配置(例如占位符)。尝试将该数据库配置提取到单独的文件中(例如 db.properties)。如果这样做,您可以替换测试类路径上的 db.properties 并使用生产 Spring 上下文进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多