我正在使用spring boot framework(v2.0.2)构建一个rest服务,在那里我在数据库上运行集成测试。我搜索过很多,在测试之前有大量关于清理数据库的文章,但不幸的是,我发现它们要么效率低下要么是黑客攻击,而不是Spring引导。你能不能,请你容忍我,并提出一个解决这个问题的好办法?
理想情况下,我认为数据库不应该在每个测试之前被清除,而是在一些组之前,如套件或每个测试类。找到的建议之一如下:
@Autowired
protected Flyway flyway;
@Before
public void init() {
flyway.clean();
flyway.migrate();
}
它在每次测试前重建数据库,显然效率不高。将此更改为静态上下文并使用
@BeforeClass
不工作,因为spring不注入静态字段。
有没有一种很好的方法来从静态上下文中到达这个路由bean,使这个解决方案有效?
这里的子问题:
FielWew有一个命令,它不仅清除数据,而且丢弃所有的东西,然后迁移命令再次执行迁移。这也像是在头顶上。由于迁移是在启动时检查的,我认为没有必要在每个测试组之前拆解和重建所有内容。仅仅清理数据就足够了。你能就如何实现这一目标提出一些建议吗?
总之,我正在寻找一种标准的方法,在每组集成测试(例如,每个类)之前删除数据库数据(如果可能的话,不删除表)。我想每个人在使用spring boot时都会面临这个任务,所以框架本身可能会考虑一些不错的解决方案。
谢谢您!