Spring配置调用了两次,使用Groovy Spock的bean也是如此
我处于一种奇怪的境地,我们有java和groovy中的测试用例,但最终会转移到groovy 我有两个抽象类,一个用于java,一个用于spock,如下所示Spring配置调用了两次,使用Groovy Spock的bean也是如此,spring,spring-boot,groovy,spock,Spring,Spring Boot,Groovy,Spock,我处于一种奇怪的境地,我们有java和groovy中的测试用例,但最终会转移到groovy 我有两个抽象类,一个用于java,一个用于spock,如下所示 @ActiveProfiles(resolver = TestProfileResolver.class) @IntegrationTest @IntegrationTestConfiguration( applicationStartUpClass = Application.class, additiona
@ActiveProfiles(resolver = TestProfileResolver.class)
@IntegrationTest
@IntegrationTestConfiguration(
applicationStartUpClass = Application.class,
additionalLocalConfigurationClasses = [LocalIntegrationTestConfiguration.class])
@SpringApplicationConfiguration(classes = [
LocalIntegrationTestConfiguration.class,
NonLocalIntegrationTestConfiguration.class,
])
abstract class TestSpec extends Specification {
}
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles(resolver = TestProfileResolver.class)
@IntegrationTest
@IntegrationTestConfiguration(
applicationStartUpClass = Application.class,
additionalLocalConfigurationClasses = { LocalIntegrationTestConfiguration.class, Resources.class})
@SpringApplicationConfiguration(classes = {
LocalIntegrationTestConfiguration.class,
NonLocalIntegrationTestConfiguration.class,
})
@Component
abstract public class Test {
}
@WebAppConfiguration
@EnableConfigurationProperties({TestProperties.class})
@Import({
Resources.class,
})
@Profile({"local"})
public class LocalIntegrationTestConfiguration {
public LocalIntegrationTestConfiguration() {
System.out.println(" $$$$$ LocalIntegrationTestConfiguration $$$$");
}
}
问题是LocalIntegrationTestConfiguration被调用了两次,一次由常规spring框架调用,然后由spock框架调用。我只想叫它一次
我想在TESTSPEC中重用测试时的配置,但不知道如何重用。有什么优秀的专家吗 这是由spring引起的,如果您以这种方式配置两个junit测试,就会发生这种情况。问题是,您正在创建不同的上下文,因为其中一个正在使用
@IntegrationTestConfiguration(
applicationStartUpClass=Application.class,
additionalLocalConfigurationClasses=[LocalIntegrationTestConfiguration.class])
另一个呢
@IntegrationTestConfiguration(
applicationStartUpClass=Application.class,
additionalLocalConfigurationClasses={LocalIntegrationTestConfiguration.class,Resources.class})
请注意附加的资源.class
如果希望spring重用上下文,则必须将其配置为完全相同。有关更多详细信息,请阅读spring文档
为什么要用@组件注释测试