【发布时间】:2020-05-23 13:36:54
【问题描述】:
我有一个Springboot 项目,在那里我找到了一种方法来创建和运行简单的Junit 测试用例,它查看存储库并获取给定实体的一些数据属性。 Junit 运行的结果是通过,所以这没有问题。
但事情就在这里,我已经看到很多例子,其中教程显示Springboot 项目,他们可以简单地运行Junit 测试,只有@Runwith 或@SpringBootTest
为他们的特定测试课程。
在我的情况下,我必须添加 3 个注释,@SpringBootTest、@RunWith 以及 @ContextConfiguation(with parameters),直到我能够运行测试用例。
所以我的问题是我如何才能尽可能简约地运行它,(我见过的一些练习对于他们的 springboot 测试类只有一个注释)
我的Springboot 测试类如下所示:
我的目录结构如下所示:
Screenshot of my Project directory structure
我的application.properties 看起来像这样:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=none
spring.jpa.hibernate.show-sql=true
spring.datasource.url=jdbc:postgresql://localhost:5432/erfan
spring.datasource.username=erfan
spring.datasource.password=
#Some additional properties is trying to be set by Spring framework so this must be set
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
#spring.datasource.initialization-mode=always
#spring.datasource.initialize=true
#spring.datasource.schema=classpath:/schema.sql
#spring.datasource.continue-on-error=true
#HikariCP is a ConnectionPool manager, related to DB stuff
#Below is the property key you need to set to * as value to expose all kind of monitoring related information
#about your web application
#management.endpoints.web.exposure.include=*
还有我的pom.xml 文件:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
<groupId>com.sample</groupId>
<artifactId>postgres</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>postgres</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
那么我的 application.properties 文件中是否缺少某些内容?为了能够在我的测试类中删除“样板”注释,我应该包含哪些内容?
【问题讨论】:
-
准确地说:如果您的测试涉及查看实际存储库,那么它肯定不是单元测试。
-
@Amadán 我同意。我只是对我的应用程序无法按我预期的方式运行的原因感到好奇
标签: java spring-boot junit spring-data-jpa spring-junit