【问题标题】:Specifing part of Spring context properties from JUnit test files从 JUnit 测试文件中指定部分 Spring 上下文属性
【发布时间】:2013-08-03 05:36:26
【问题描述】:

我有一个 bean 的多个模拟实现,该 bean 被称为 beanA。 Mock 的参考名称可以说:beanAMock1、beanAMock2... beanAMockN。

在上下文文件中,我根据上下文占位符 beanAImplementation 为 beanA 引用别名:

<alias name="${beanAImplementation}" alias="beanA"/>

还有其他具有像这样的模拟实现的 bean(beanB、beanC...)。而且我有一些测试套件,它们利用他们特定的 beanA、beanB... 实现集。

所有 bean 都有默认值,用于在上下文中包含的属性文件中指定它们的切换占位符。

我正在寻找一种方法来更改每个测试套件的部分 bean 实现。

我知道三种方法可以做到这一点:

1) 为每个测试套件创建额外的上下文文件,该文件将从单独的属性文件加载所需的属性 - 这种方式需要为每个测试套件创建两个额外的文件(上下文、属性)。

2) 使用别名定义为每个测试套件创建配置文件。据我了解,这需要为每个配置文件中的每个 bean 提供别名 - 而我有一组默认的 bean 实现。

3) 在测试套件中手动创建上下文并覆盖所需的属性 - 为此我需要在测试套件中编写许多代码。

还有其他方法吗? (可能像#3,但使用 SpringJUnit4ClassRunner 或其子类,如果可以在注释中提供所需的属性 - 这似乎是一种最佳方法)

【问题讨论】:

    标签: spring junit4


    【解决方案1】:

    我通过继承 SpringJUnit4ClassRunner 并覆盖它的方法解决了这个问题 TestContextManager createTestContextManager(Class clazz) 方法。此方法接受测试套件的 Class 对象,并在创建上下文之前调用。因此可以从测试套件类中读取额外的注释并设置系统属性,这些属性将在上下文创建期间替换相应的占位符。

    【讨论】:

      猜你喜欢
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      • 2014-02-09
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多