Java 由于上下文问题,无法执行单元测试?
我正在尝试执行一个基本单元测试,以将数据保存到内存H2数据库中。然后检索并比较它。但我被困在某种上下文问题上,我无法在谷歌找到解决方案 这是我的结构: 这是我的测试: 最后是测试包的application.properties: 当我尝试运行测试时,我得到的是:Java 由于上下文问题,无法执行单元测试?,java,spring,unit-testing,spring-boot,junit,Java,Spring,Unit Testing,Spring Boot,Junit,我正在尝试执行一个基本单元测试,以将数据保存到内存H2数据库中。然后检索并比较它。但我被困在某种上下文问题上,我无法在谷歌找到解决方案 这是我的结构: 这是我的测试: 最后是测试包的application.properties: 当我尝试运行测试时,我得到的是: java.lang.NoSuchMethodError: org.springframework.util.Assert.state(ZLjava/util/function/Supplier;)V at org.spr
java.lang.NoSuchMethodError: org.springframework.util.Assert.state(ZLjava/util/function/Supplier;)V
at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildMergedContextConfiguration(AbstractTestContextBootstrapper.java:379)
at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildDefaultMergedContextConfiguration(AbstractTestContextBootstrapper.java:312)
at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildMergedContextConfiguration(AbstractTestContextBootstrapper.java:265)
at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildTestContext(AbstractTestContextBootstrapper.java:108)
我的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nbu.sportapp</groupId>
<artifactId>nbu-sport-app</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>nbu-sport-app</name>
<url>http://maven.apache.org</url>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>5.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<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-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.2.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
</dependency>
<dependency>
<groupId>it.ozimov</groupId>
<artifactId>spring-boot-email-core</artifactId>
<version>0.6.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.1.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.0.0
com.nbu.sportapp
nbu运动应用程序
0.0.1-快照
罐子
nbu运动应用程序
http://maven.apache.org
SpringBoot的演示项目
org.springframework.boot
spring启动程序父级
1.5.7.1发布
UTF-8
UTF-8
1.8
org.springframework.security
spring安全内核
5.1.1.1发布
朱尼特
朱尼特
4.12
测验
org.springframework.boot
spring引导启动器数据jpa
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
春季启动邮件
org.springframework.boot
弹簧靴开发工具
运行时
mysql
mysql连接器java
8.0.13
org.springframework.boot
弹簧起动试验
测验
2.0.4.1发布
com.h2数据库
氢
1.4.197
测验
org.junit.jupiter
JUnitJupiter api
5.2.0
编写
org.junit.platform
junit平台surefire提供程序
1.3.2
org.springframework.boot
弹簧启动试验
是奥齐莫夫
spring引导电子邮件核心
0.6.3
朱尼特
朱尼特
org.springframework
弹簧试验
5.1.1.1发布
编写
org.quartz-scheduler
石英
2.3.0
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
org.quartz-scheduler
石英工作
2.3.0
org.springframework.boot
springbootmaven插件
您很可能混合了spring core
和spring test
依赖版本,从而导致无此方法错误
。检查项目设置,确保所有Spring依赖项都在同一版本中。您的依赖项乱七八糟。您将Spring Boot 1.5.7与Spring Boot 2.0.4混合使用。这导致了Spring4.3和5.0的混合,接下来您为Spring5.1.1添加了一个Spring测试依赖项,并在混合中添加了另一个版本。更不用说Spring安全版本了
简而言之,你的依赖关系是一团糟。不要包含junit
和spring测试
依赖项,而是使用spring启动测试
。这同样适用于安全使用spring boot starter security
对于初学者,不要使用version
属性,所有这些属性都是通过spring boot starter父级的parent
声明来管理的
显然,您还没有使用JUnit5,所以您可能还想删除这些依赖项
最后,如果您想通过声明aH2.version
和/或MySQL.version
属性来覆盖properties
部分中的H2和MySQL版本,Spring Boot将为您管理H2和MySQL版本。总之,您还可以删除这些依赖项的version
标记
您的依赖项
部分应该如下所示
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</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-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>it.ozimov</groupId>
<artifactId>spring-boot-email-core</artifactId>
<version>0.6.3</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
org.springframework.boot
spring引导启动器数据jpa
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧启动安全
org.springframework.boot
春季启动邮件
org.springframework.boot
弹簧靴开发工具
运行时
mysql
mysql连接器java
org.springframework.boot
弹簧起动试验
测验
com.h2数据库
氢
测验
是奥齐莫夫
spring引导电子邮件核心
0.6.3
org.quartz-scheduler
石英
2.3.0
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
org.quartz-scheduler
石英工作
2.3.0
发布代码或错误(即堆栈跟踪)时,请使用编辑器中的代码格式选项而不是图像来发布文本片段。能否向我们显示您的依赖项版本(pom)?@Matt yes i added it您使用的是spring boot starter test
v.2.0.4.RELEASE但是v。1.5.7.释放弹簧护套。尝试使用相同的版本从spring boot starter test dep中删除版本标签并再次检查请/谢谢,我会尝试解决它!谢谢你的回答。一切看起来都更加清晰易懂。我最近开始学习SpringBoot。再次感谢你,祝你有愉快的一天!