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

使用Maven测试时Spring Boot应用程序未读取Application.properties文件

方嘉志
2023-03-14

更新:

这会导致我的应用程序出现错误,因为其他bean无法初始化。奇怪的是它在Eclipse上运行得很好。

我有一个名为DataService的类,它扩展了JDBCTemplate。在我的DataService构造函数中,我注入了数据源。

@Component
public class DataService extends JdbcTemplate  {

    @Autowired
    public DataService(DataSource dataSource){
        super(dataSource);
    }
    ...more custom methods
}

我在其他bean中使用这个DataService类来执行DB操作。我的数据源在我的application.properties文件中定义

spring.datasource.url: jdbc:h2:tcp://localhost/~/testdb2
spring.datasource.driverClassName: org.h2.Driver

这是我的application.java类

@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableWebMvcSecurity
@EnableAsync
@EnableScheduling
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }    
}

当我尝试使用Maven运行jUnit测试时,我第一次意识到了这一点

mavent test

我以为这只是与它如何执行junit测试用例有关,然而,当我简单地尝试使用Maven运行应用程序时,它也会发生。

我的JUnit4测试类定义如下:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes={Application.class})
@WebAppConfiguration
public class QuestionRepositoryIntegrationTests {
     ...methods
}

我使用了Spring Boot操作文档(http://projects.Spring.io/spring-boot/docs/docs/howto.html)中的示例

当我从Eclipse运行这个JUnit类时,它工作得很好。当它从maven执行时,它开始像我上面描述的那样运行。

共有1个答案

高宸
2023-03-14

您可以配置您的主数据源,如下所示,我在这里使用的是mysql。但您可以使用自己的数据源。您可以在应用程序中配置以下内容。src/main/resources中的properties

spring.datasource.url = jdbc:mysql://localhost:3306/dsm
spring.datasource.username = root
spring.datasource.password = admin123
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1

spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

要在应用程序中运行测试,您可以使用相同的数据源,也可以在src/test/resources中创建application-test.properties并在那里配置测试数据源。

 类似资料:
  • 根据这个链接,我可以创建一个测试应用程序,Robolectric将自动开始在测试中使用它。我不能让它运转起来。 我正在使用Dagger进行依赖注入,并为和创建了注入包装类。那么我的每个活动都扩展了包装器活动类,而不是简单的旧。

  • 我无法读取项目中作为bean从另一个项目注入的类中的application.properties值。我的项目正在使用另一个项目,该项目的类需要从application.properties中读取配置。Mine是一个maven项目和一个Spring Boot应用程序,在src/main/resources文件夹中有application.properties,这些属性值在其中定义。我错过了什么,它无

  • 使用spring-boot时,一切工作都很好。尽管如此,在spring-boot中已删除了注释和。我试图将代码重构为新版本,但我做不到。对于以下测试,我的应用程序在测试之前没有启动,http://localhost:8080返回404: 如何重构测试以使其在Spring-Boot1.5中工作?

  • 我使用最新版本的java Spring放心。我尝试用post方法和json body(contentType是应用程序/json)模拟调用进行身份验证,但是当我的请求被我的java Spring应用程序拦截时,主体是空的...但空的身体不是。 我可以通过ngrep和一些函数看到所有请求都正确完成。 当我从js客户端使用curl、postman或ajax时,我没有这个问题 以下是来自peek()函数

  • 在我的项目中,我想使用特定于环境的属性文件。例如,如果我在开发中运行它,它应该使用应用程序。dev.properties,对于生产,它应该使用应用程序。产品属性等等。 我有下面两个文件在我的资源文件夹。 application.properties(用于生产) application.dev.properties(用于开发) 我有一个属性像下面的每个文件。 为了刺激 给德夫 我有一门课,如下所示

  • 我们有两个配置文件:一个在Spring Boot应用程序(application.properties)中,另一个在ReactJs应用程序(我们在create-react-app中使用.env)中。决定在ReactJs应用程序中也使用Spring Boot application.properties。有谁能指导我如何才能做到这一点吗?我读过关于“Properties-Reader”的文章,并尝试