导入 org.springframework.test.context.junit4.SpringJUnit4ClassRunner 无法解析

Posted

技术标签:

【中文标题】导入 org.springframework.test.context.junit4.SpringJUnit4ClassRunner 无法解析【英文标题】:The import org.springframework.test.context.junit4.SpringJUnit4ClassRunner cannot be resolved 【发布时间】:2015-08-11 08:43:40 【问题描述】:

我是 Spring 的新手,这也是我在 *** 上的第一个问题,所以我会尽量让这个问题易于理解。

我正在尝试在this 教程上使用 Spring 和 Maven 创建 Web 服务客户端:我收到此错误:无法解析导入 org.springframework.test.context.junit4

这是我的代码:

package demo;

import hello.WsClientApplication;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; //this won't import


@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = WsClientApplication.class)
public class WsClientApplicationTests 

    @Test
    public void contextLoads() 
    


这是我的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>org.springframework</groupId>
    <artifactId>gs-consuming-web-service</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.3.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
           <dependency>
               <groupId>org.springframework.ws</groupId>
               <artifactId>spring-ws-core</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- tag::wsdl[] -->
            <plugin>
                <groupId>org.jvnet.jaxb2.maven2</groupId>
                <artifactId>maven-jaxb2-plugin</artifactId>
                <version>0.12.3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <schemaLanguage>WSDL</schemaLanguage>
                    <generatePackage>hello.wsdl</generatePackage>
                    <schemas>
                        <schema>
                            <url>http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdl</url>
                        </schema>
                    </schemas>
                </configuration>
            </plugin>
            <!-- end::wsdl[] -->
        </plugins>
    </build>

</project>

我在 *** 中尝试了其他一些解决方案,但无法正常工作。

谢谢。

【问题讨论】:

【参考方案1】:

你需要添加对spring-boot-starter-test的依赖:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>

【讨论】:

我还必须添加版本,但也对我有用 @aditzu 如果您使用的是 Spring Boot,则不需要添加版本。 你是对的。对于我没有使用 Spring Boot 的我来说,“spring-test”的依赖是解决方案。谢谢! 它导致我的spring应用程序的主类发生冲突。【参考方案2】:

现在,如果您使用最新的 spring-boot,1.5.2 RELEASE,@SpringApplicationConfiguration 不再可用,您必须使用 @SpringBootTest。参考这里(@spring boot starter test in Spring Boot)

【讨论】:

感谢您的更新!我还没有尝试过,但会记住这一点,以备将来开发! 在我的情况下,使用 Spring 4.x,我还必须将导入更改为 org.springframework.test.context.junit4.SpringJUnit4ClassRunner【参考方案3】:

分级

在 gradle 中,这将通过添加

来完成
testCompile("org.springframework.boot:spring-boot-starter-test")

到依赖块,如下所示:

dependencies 
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("junit:junit")
    testCompile("org.springframework.boot:spring-boot-starter-test")

之后应该可以在你的类的顶部写一个导入语句

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

允许你使用注解:

@RunWith(SpringJUnit4ClassRunner.class)
public class MyAppTest 


【讨论】:

谢谢,我使用的是 Maven,所以 Wim 的回答对我有用,但是我确信这些信息对于使用 Gradle 遇到同样问题的人很有用。【参考方案4】:

我知道这个回答有点晚了,但我遇到了同样的问题,我发现我可以通过 2 种方法来解决它。

    我能够删除 测试 标记并删除了限制 我在进行测试时遇到了 intellij 没有正确处理它的问题,所以我确保它被标记为 test-root,我将它从绿色 -> 灰色 -> 改回绿色 test-root 并解决了我的问题问题。

【讨论】:

【参考方案5】:

只是为了改善情况。

我设法像这样修复它:

之前,spring boot initializr 创建了一个对 spring-boot-starter-test 的依赖项,但被排除在外,如下所示:

  <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

Eclipse 指责注解@Runwith 是 Junit 4,因此,逻辑上要做的事情是删除排除。

最终的 POM 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>         
</dependency>

【讨论】:

我今天在与 SBA 合作时遇到了同样的问题。删除了 pom 中的排除细节并刷新了工作空间。已解决。【参考方案6】:

有时 maven 开始下载依赖项并且没有完成。 转到您的 .m2 文件夹并输入:

find . -name *progre*

此命令将向您显示带有“in-progess”标签的每个文件,即丢失或未完成的文件。

删除文件夹并再次尝试更新依赖项。

【讨论】:

【参考方案7】:

如果你没有使用 spring boot,而只使用 spring 框架,你应该为 spring-test 添加依赖。

<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>2.5</version>
    <scope>test</scope>
</dependency>

您可以使用 mvn 检查最新版本的 spring-test 并进行相应更新。

如果你使用 spring-boot 项目而不是添加 spring boot 依赖项,如果你不使用 spring-boot,下面会工作,但不推荐。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>   
    <version>2.4.1</version>      
</dependency>

注意:如果您使用的是 spring-boot 项目,则无需添加&lt;version&gt;

【讨论】:

以上是关于导入 org.springframework.test.context.junit4.SpringJUnit4ClassRunner 无法解析的主要内容,如果未能解决你的问题,请参考以下文章

Axure RP文件导入导出方法

Python导入模块问题

POI 实现导入Excel 导入问题

模块导入循环导入模块查找顺序相对导入及绝对导入

如何导入excel并存入数据库

sql如何导入数据库