java—防止测试使用特定的spring概要文件运行

xghobddn  于 2021-07-15  发布在  Java
关注(0)|答案(3)|浏览(365)

我有一些在数据库中创建/删除条目的集成测试。问题是如果我用

spring.profiles.active=prod

我的生产数据库被删除(当测试清除数据库时)。有没有办法阻止测试在这个特定的spring配置文件上运行?
我看到过这样一条线索:当特定的spring概要文件处于活动状态时,如何防止运行测试?但没有有用的答案。
谢谢您

mfuanj7w

mfuanj7w1#

你的问题可能有多种解决方案。
使用内存中的数据库,比如h2forsql和flapdoodleforno-sql来运行测试**首选方式
使用spring属性的克隆创建一个单独的属性文件。只需更改数据库属性/spring概要文件或其他内容。将此属性文件与测试类上的@testpropertysource一起使用。
在测试中使用@dirtiescontext仅创建/删除受影响的行。
您可以做的另一件事是在数据库层创建stud类来模拟操作。

cotxawn7

cotxawn72#

我能够解决以下问题:https://stackoverflow.com/a/32892291/8679100. 解决方案并不完美,因为我需要验证prod概要文件是否在中处于活动状态 @BeforeAll and @毕竟 , but it does work. Furthermore, system.getproperty(“spring.profiles.active”,“”); didn't actually work, but arrays.stream(environment.getactiveprofiles()).anymatch(env->(env.equalsignorecase(“prod”))``did

xwmevbvl

xwmevbvl3#

您可以使用@ifprofilevalue注解来禁用测试。它并不直接依赖于spring概要文件,但是您可以很容易地使用config file根据spring概要文件设置所需的值。
话虽如此,在生产数据库上运行从数据库(或任何其他数据库事务)中删除条目的测试听起来非常危险。我支持@sachin上面的建议-在测试环境而不是生产环境中运行测试

相关问题