我有一个bean的多个模拟实现,该bean被引用为beanA。 Mock的引用名称是:beanAMock1,beanAMock2 ... beanAMockN。
在上下文文件中,我根据上下文占位符beanAlmplementation对
进行别名beanA引用<alias name="${beanAImplementation}" alias="beanA"/>
还有其他bean(beanB,beanC ...)具有这样的模拟实现。我有一些测试服,使用他们特定的beanA,beanB ...实现。
所有bean都具有在上下文中包含的属性文件中指定的切换占位符的默认值。
我正在寻找一种方法来改变每个测试套件的bean实现部分。
我知道有三种方法可以做到这一点:
1)为每个测试套件创建额外的上下文文件,该文件将从单独的属性文件加载所需的属性 - 这种方式需要为每个测试套件创建两个附加文件(上下文,属性)。
2)使用别名定义为每个测试套件创建配置文件。据我所知,这需要为每个配置文件提供每个配置文件的别名 - 而我有一组默认的bean实现。
3)手动在测试套件中创建上下文并覆盖所需的属性 - 我需要在测试套件中编写许多代码。
还有其他方法吗? (可能与#3类似,但使用SpringJUnit4ClassRunner或其子类,如果可以在注释中提供所需的属性 - 这似乎是最好的方法)
答案 0 :(得分:0)
我通过继承SpringJUnit4ClassRunner并覆盖它来解决这个问题 TestContextManager createTestContextManager(Class clazz)方法。此方法接受测试套件的Class对象,并在创建上下文之前调用。因此,可以从测试套件类中读取其他注释,并设置系统属性,这些属性将在上下文创建期间替换相应的占位符。