繁体   English   中英

如何在两个不同的数据库上运行JUnit测试

[英]How to run your JUnit tests on two different databases

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

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

对于其他数据库也有类似的副本,我可以在每个数据库的抽象类BaseTest中运行所有Tests。 此方法有两个缺点:

  1. 我的班级数量增加了三倍
  2. 我只能通过转到OracleTest类并执行所有测试来在基类中执行测试

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

与使用测试Spring上下文相比,单元测试类对我的关注要少得多。 我认为将Spring上下文测试作为反模式。 您的集成测试不在测试生产布线。 因此,您的生产环境未经测试。 尝试避免创建测试上下文,而是在集成测试中使用生产Spring配置。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM