Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 由于上下文问题,无法执行单元测试?_Java_Spring_Unit Testing_Spring Boot_Junit - Fatal编程技术网

Java 由于上下文问题,无法执行单元测试?

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

我正在尝试执行一个基本单元测试,以将数据保存到内存H2数据库中。然后检索并比较它。但我被困在某种上下文问题上,我无法在谷歌找到解决方案

这是我的结构:

这是我的测试:

最后是测试包的application.properties:

当我尝试运行测试时,我得到的是:

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,所以您可能还想删除这些依赖项

最后,如果您想通过声明a
H2.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。再次感谢你,祝你有愉快的一天!