Java 防止使用特定弹簧外形运行测试
我有一些在数据库中创建/删除条目的集成测试。问题是如果我使用Java 防止使用特定弹簧外形运行测试,java,spring,spring-boot,testing,spring-profiles,Java,Spring,Spring Boot,Testing,Spring Profiles,我有一些在数据库中创建/删除条目的集成测试。问题是如果我使用 spring.profiles.active=prod 我的生产数据库被删除(当测试清除数据库时)。有没有办法阻止测试在这个特定的spring配置文件上运行 我看到了这条线索:但没有有用的答案 谢谢您的问题可能有多种解决方案 使用内存中的数据库,如for Sql和for no Sql来运行测试**首选方式 使用spring属性的克隆创建单独的属性文件。只需更改数据库属性/spring概要文件或其他内容。将此属性文件与测试类上的@te
spring.profiles.active=prod
我的生产数据库被删除(当测试清除数据库时)。有没有办法阻止测试在这个特定的spring配置文件上运行
我看到了这条线索:但没有有用的答案
谢谢您的问题可能有多种解决方案
话虽如此,在生产数据库上运行从数据库(或任何其他数据库事务)中删除条目的测试听起来非常危险。我支持上面@Sachin的建议-在测试环境中运行测试,而不是在生产环境中运行测试我能够解决以下问题:。解决方案并不完美,因为我需要验证prod配置文件在
@之前和@之后中是否处于活动状态,但它确实有效。此外,
System.getProperty(“spring.profiles.active”,”)<代码>实际上不起作用,但是
Arrays.stream(environment.getActiveProfiles()).anyMatch(env->(env.equalsIgnoreCase(“prod”))``这有帮助吗@Aksapy,不幸的是,没有,这些答案都不能解决问题,尽管问题是相同的,如何在默认情况下禁用测试类。无论如何,谢谢你。我正在为不同的配置文件使用不同的数据库,默认情况下,测试不会在生产数据库上运行。这是一种防止可能分心的预防措施。我只是在测试环境中运行测试,但我想防止在spring.profiles.active=prod
时意外运行mvn测试。我不知道如何使用@IfProfileValue。我试图执行@IfProfileValue(name=“spring.profiles.active”,value=“prod”)
,但当spring.profiles.active
为“dev”时,它仍然运行。你能举个例子吗?