当前位置: 首页 > 知识库问答 >
问题:

Spring Boot测试不加载应用程序上下文

李甫
2023-03-14

我在我的src/test/resources路径中创建了一个application-integrationtest.yaml,所以我的测试是针对创建的docker TestContainer运行的。问题是没有加载我的application-integrationtest.yaml。

我正在运行一个SpringBoot2.x应用程序

@Configuration
public class IndexModificationDatabaseConfiguration {

  @Bean
  public JOOQToSpringExceptionTransformer 
  jooqToSpringExceptionTransformer() {
    return new JOOQToSpringExceptionTransformer();
  }

  @Bean
  public DataSourceConnectionProvider connectionProvider(final DataSource 
  dataSource) {
    return new DataSourceConnectionProvider(new 
    TransactionAwareDataSourceProxy(dataSource));
  }

  @Bean(name = "indexModification")
  @ConfigurationProperties("index-modified.datasource")
  public DataSourceProperties dataSourceProperties() {
    return new DataSourceProperties();
  }

  @Bean
  public DataSource 
  indexModificationDataSource(@Qualifier("indexModification") final 
  DataSourceProperties properties) {
    return properties.initializeDataSourceBuilder().build();
  }

  @Bean
  public DSLContext 
  createIndexModifiedDslContext(@Qualifier("indexModificationDataSource") 
  final DataSource dataSource) {
    final DefaultConfiguration configuration = new DefaultConfiguration();
    configuration.set(connectionProvider(dataSource));
    configuration.set(new 
    DefaultExecuteListenerProvider(jooqToSpringExceptionTransformer()));
    configuration.set(SQLDialect.POSTGRES);
    return new DefaultDSLContext(configuration);
  }
}
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {IndexModificationDatabaseConfiguration.class})
@ActiveProfiles("integrationtest")
public class ContainerOrchestrator {

  @Test
  public void testContainer() {
  assertTrue(true);
  }
}

原因:org.springframework.beans.BeanInstantiationException:无法实例化[javax.sql.DataSource]:工厂方法“index modificationDataSource”引发异常;嵌套异常为org.springframework.boot.autocigure.jdbc.datasourceproperties$datasourcebeancreationexception:在org.springframework.beans.factor.support.simpleinstantiationstrategy.instantiate(SimpleInstantiationstrategy.java:185)在org.springframework.beans.factor.support.constructorresolver.instantiateusingfactorymethod(

当我调试时,我看到我的数据源的驱动程序、Url、密码等都有空值。

共有1个答案

满才
2023-03-14

我认为您需要将@profile注释添加到您的配置类中

 类似资料:
  • 我正在使用一个spring启动应用程序,它运行我的src/main/resources/config/application。yml。 当我通过以下方式运行测试用例时: 测试代码仍在运行我的应用程序。要加载属性的yml文件。我想知道是否有可能再运行一个*。运行测试用例时的yml文件。

  • 问题内容: 我有一个包含2个测试的测试类: 当我单独运行测试时,我不会出错,但是当我同时运行所有测试时,会失败。失败是由于某些测试修改了应用程序上下文导致的: 是否可以单独运行此测试?我只想在启动test1时读取所有必需的东西,然后运行测试,然后关闭所有必需的东西。然后启动test2。 问题答案: 您可以在修改应用程序上下文的测试类上使用@DirtiesContext批注。 Java文档 Spri

  • 嗨,我正试图让spring junit测试用例...我要求加载完整的应用程序上下文。但是,junit测试不会初始化完整的应用程序上下文。 因此,它应该扫描com.test包中的所有spring bean,并将它们加载到Junit TestCase的applicationcontext中。但从大豆的产量来看,它似乎没有做到这一点。

  • 运行默认Spring Boot单元测试时: 我收到此错误: 我正在运行Spring Boot 2.6.2,使用Flyway和H2,以及这些依赖项: 这是演示项目:https://github.com/filip194/demo-h2-flyway/. 我不确定,也不是专家,但也许与Hibernate有一些关联,我无法理解。我试图为H2创建application.properties的测试资源文件夹

  • 假设我想为类编写一个,它可以是,因此我需要加载。 我的测试有注释和main方法 当然,我有这样一些基准: 现在的问题是如何注入? 可能的解决办法