我能够解决以下问题: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
3条答案
按热度按时间mfuanj7w1#
你的问题可能有多种解决方案。
使用内存中的数据库,比如h2forsql和flapdoodleforno-sql来运行测试**首选方式
使用spring属性的克隆创建一个单独的属性文件。只需更改数据库属性/spring概要文件或其他内容。将此属性文件与测试类上的@testpropertysource一起使用。
在测试中使用@dirtiescontext仅创建/删除受影响的行。
您可以做的另一件事是在数据库层创建stud类来模拟操作。
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”))``didxwmevbvl3#
您可以使用@ifprofilevalue注解来禁用测试。它并不直接依赖于spring概要文件,但是您可以很容易地使用config file根据spring概要文件设置所需的值。
话虽如此,在生产数据库上运行从数据库(或任何其他数据库事务)中删除条目的测试听起来非常危险。我支持@sachin上面的建议-在测试环境而不是生产环境中运行测试