当前位置: 首页 > 面试题库 >

如何使用@IfProfileValue测试配置文件是否处于活动状态?

尹冠宇
2023-03-14
问题内容

因此@IfProfileValue,与@Profile或无关@ActiveProfiles@Profile测试以查看配置文件是否处于活动状态,@ActiveProfiles将其设置为活动状态,并@IfProfileValue允许您检查Spring中的内容Environment。?我会弃用所有这些,添加新的@IfEnvironment@IfProfile@ActivateProfiles

除了评论,我该如何使用@IfProfileValue检测我的个人资料是否处于活动状态?我目前不在此项目上使用Spring
Boot。答案应该显示代码,如果配置文件被激活为,我们将假设我希望测试运行@ActiveProfiles( "test" )

我试过了,@IfProfileValue(name = "activeProfiles", value = "test")但是似乎跳过了测试,这意味着它不匹配。我要去推测问题可能与事实,做ActiveProfiles一个Collection


问题答案:

因此@IfProfileValue,与@Profile或 无关@ActiveProfiles

…我假设您已经看过,因为您昨天评论了我的答案。

其原因@IfProfileValue有没有关系@Profile或者@ActiveProfiles是由于架构的演变。有关更多详细信息,请参见下文。

@Profile测试以查看配置文件是否处于活动状态,
@ActiveProfiles将其设置为活动状态,并@IfProfileValue允许您检查Spring中的内容Environment

这些陈述并不完全正确,尤其是最后一部分。

@Profile如果有一个指定的 bean定义配置文件
在Spring中对于处于活动状态,则用来用于有选择地启用组件(例如@Service等),@Configuration类或@Bean方法。这个注解不直接相关测试:应该
不是 被一个测试类使用。 Environment``ApplicationContext``@Profile

@ActiveProfiles用于指定在加载用于集成测试的 Bean定义配置文件 (例如,通过声明的
Bean@Profile)应该处于活动状态ApplicationContext

@IfProfileValue没有
允许你检查的事在春节Environment。我不确定您为什么要这样做,因为Spring框架中的任何文档都没有说明这一点。正如我在上述线程中所述:

请注意,它@IfProfileValue是在Spring Framework 2.0中引入的,
于bean定义配置文件的概念,并且@ActiveProfiles是在Spring Framework 3.1中首次引入的。

在上述线程中,我还指出了以下几点:

考虑到的语义时,“配置文件”一词可能会引起误解@IfProfileValue。关键是要考虑“测试组”(如TestNG中的那些)而不是“配置文件”。请参阅JavaDoc中@IfProfileValue的示例

如何使用@IfProfileValue检测我的个人资料是否处于活动状态?

这取决于,并且…我假设您所说的“ profile” 是指 bean定义配置 文件。

如果@ActiveProfiles用于设置测试的 Bean定义配置文件 ,则当前不能@IfProfileValue用来确定
Bean定义配置文件 是否处于活动状态,因为通过配置的
Bean定义配置文件@ActiveProfiles是直接在测试中设置的,ApplicationContext而不是作为Java系统属性设置的。

但是,如果你设置 的bean定义配置文件 只能 通过spring.profiles.active系统属性,那么
可以使用@IfProfileValue,以确定是否一个 bean定义配置文件
是积极的,因为@IfProfileValue事实上作品与系统性能。例如,您可以使用以下代码:

@IfProfileValue(name = "spring.profiles.active", value = "test")

我试过了,@IfProfileValue(name = "activeProfiles", value = "test")但是似乎跳过了测试,这意味着它不匹配。

activeProfiles是不正确的,因为属性名称不正确。正确的系统属性名称是spring.profiles.active。有关AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME详细信息,请参见。

@IfProfileValue不协调的事实@ActiveProfiles是Spring团队的已知问题。请咨询以下JIRA问题以获取更多详细信息,并根据需要加入讨论。

  • https://jira.spring.io/browse/SPR-7754
  • https://jira.spring.io/browse/SPR-8982
  • https://jira.spring.io/browse/SPR-11677

希望这可以为您澄清情况!

Sam( Spring TestContext Framework的作者



 类似资料:
  • 我在Maven上构建了一个Spring Boot应用程序。我正在使用Spring概要文件来区分特定于环境的配置。我想防止在特定的Spring配置文件处于活动状态时运行测试。原因:我希望防止使用生产属性运行测试()。我想在全球范围内(可能使用一些Maven插件)进行这项工作,而不是在每个测试中单独进行。 你对此有什么检查过的解决方案吗?

  • 问题内容: 对于每个请求,您可以通过几种不同的方式来判断会话是否已经开始,例如: 要么: 但是,如果您启动会话然后将其关闭,它们都将失败。将返回前一个会话的ID,同时将对其进行定义。同样,如果您已经有一个活动会话,则此时调用将生成一个。有没有一种明智的方法来检查会话当前是否处于活动状态,而不必诉诸输出缓冲,关闭运算符()或其他类似hacky的方法? 编辑8/29/2011:向PHP 5.4添加了新

  • 问题内容: 因此,我正在使用下载管理器在我的应用程序中下载多个文件。开始某些活动之前,我需要这些文件才能完成下载。如何检查是否有活动的下载,所以我可以告诉用户等待下载完成。然后,当它们完成时,我需要使按钮可见。我已经用谷歌搜索过,甚至自己(盲目地)尝试了一些代码,但没有任何效果。如果有人可以向正确的方向推动我,我将不胜感激。 问题答案: 使用打听下载。调用时,返回值是下载的ID。您还可以按状态查询

  • 本文向大家介绍C#中如何检查线程是否处于活动状态,包括了C#中如何检查线程是否处于活动状态的使用技巧和注意事项,需要的朋友参考一下 要检查线程是否存在,代码如下: 示例 输出结果 这将产生以下输出- 示例 现在让我们来看另一个示例- 输出结果 这将产生以下输出-

  • 我需要检查FTP服务器是否处于活动状态,此服务器是否: 我尝试了这段代码: 问题是返回以下异常: 如何才能做到这一点呢? 谢谢你

  • 我有一个用maven作为构建工具的应用程序。 我正在使用maven概要文件从不同的概要文件设置不同的属性。 假设我运行带有out的maven,并指定我希望spring的任何其他概要文件,将和作为活动概要文件。