我创建了一个元注释 @EmbeddedMongoDBUnitTest,用于激活两个配置文件在基于Spring的单元测试中使用。基本设置已经生效:
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@ActiveProfiles({"embeddedMongoDB", "embeddedMongoDBUnitTest"})
public @interface EmbeddedMongoDBUnitTest {
}
@RunWith(SpringJUnit4ClassRunner.class)
@EmbeddedMongoDBUnitTest
@ContextConfiguration(...)
public class WorkingTest {
...
}
现在,当尝试在测试类本身上使用另一个@ActiveProfiles注释来激活另一个配置文件时,@EmbeddedMongoDBUnitTest中的配置文件将不再被激活:
@RunWith(SpringJUnit4ClassRunner.class)
@EmbeddedMongoDBUnitTest
@ActiveProfiles({"h2IntegrationTests"})
@ContextConfiguration(...)
public class NotWorkingTest {
...
}
这个问题出在哪里?是Spring测试代码的bug还是其他原因导致的?
@ActiveProfiles
本身并不是元注解。自 Spring 4 版本以来,它可以用作元注解。然而,OP 显然已经在使用 Spring 4+,因为他的@EmbeddedMongoDBUnitTest
可以独立工作。 - Sam Brannen@ActiveProfiles
问题请参考https://github.com/spring-projects/spring-framework/issues/26145 - drekbour