继承上下文配置和扩展位置

时间:2015-02-17 17:48:04

标签: java spring

我有测试数据库包的类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:DatabaseBeanLocations.xml" })
public abstract class AbstractDatabaseTest extends AbstractTransactionalJUnit4SpringContextTests {
...
}

测试另一个包,例如后端:

public class BackendTest extends AbstractDatabaseTest {
 ...
}

因此,此BackendTest类会从ContextConfiguration继承AbstractDatabaseTest。但我想添加另一个xml文件,例如:BackendBeansLocations.xml

执行此操作的一种方法是忽略超类中的locations

@ContextConfiguration(inheritLocations = false, 
locations = {"classpath:BackendBeansLocations.xml", "classpath:DatabaseBeanLocations.xml" })
public class JobExecutorTest extends AbstractDatabaseTest {

然后重复DatabaseBeanLocations.xml,这违反了DRY规则。有办法避免这种情况吗?继承位置,但也可以通过添加新位置来扩展它们。

1 个答案:

答案 0 :(得分:0)

BackendBeansLocations.xml<import> DatabaseBeanLocations.xml。然后,在JobExecutorTest中,只需导入classpath:BackendBeansLocations.xml

这样你就可以尊重DRY了,继承只是从注释中逐出了XML文件。