import org.springframework.test.context.junit4.SpringJUnit4ClassRunner 无法解析
The import org.springframework.test.context.junit4.SpringJUnit4ClassRunner cannot be resolved
我是 Spring 的新手,这也是我在 Whosebug 上的第一个问题,所以我会尽量让这个问题易于理解。
我在 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>
我在 Whosebug 中尝试了一些其他解决方案,但我无法让它工作。
谢谢。
您需要添加对spring-boot-starter-test
的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
Gradle
在 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")
}
之后应该可以在 class
的顶部写一个 import 语句
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
允许您使用注释:
@RunWith(SpringJUnit4ClassRunner.class)
public class MyAppTest {
}
现在,如果您使用最新的 spring-boot,1.5.2 RELEASE,@SpringApplicationConfiguration 不再可用,您必须使用 @SpringBootTest。参考这里(@)
有时 Maven 开始下载依赖项但没有完成。
转到您的 .m2 文件夹并键入:
find . -name *progre*
此命令将显示每个带有标签 "in-progess" 的文件,即丢失或未完成的文件。
删除文件夹并再次尝试更新依赖项。
我知道这个回答有点晚了,但我遇到了同样的问题,我发现我可以通过两种方式解决它。
- 我能够删除
测试 标签并删除限制
- 我在做测试时遇到了一个问题,intellij 没有正确处理它,所以我确保它被标记为测试根,我把它从绿色 -> 灰色 -> 改回绿色测试根,然后解决了我的问题。
只是为了改善这种情况。
我设法像这样修复它:
之前,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>
如果您没有使用 spring 引导,而只使用 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 启动依赖项,如果您没有使用 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 项目,则无需添加 <version>
。
我是 Spring 的新手,这也是我在 Whosebug 上的第一个问题,所以我会尽量让这个问题易于理解。
我在 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>
我在 Whosebug 中尝试了一些其他解决方案,但我无法让它工作。
谢谢。
您需要添加对spring-boot-starter-test
的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
Gradle
在 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")
}
之后应该可以在 class
的顶部写一个 import 语句import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
允许您使用注释:
@RunWith(SpringJUnit4ClassRunner.class)
public class MyAppTest {
}
现在,如果您使用最新的 spring-boot,1.5.2 RELEASE,@SpringApplicationConfiguration 不再可用,您必须使用 @SpringBootTest。参考这里(@
有时 Maven 开始下载依赖项但没有完成。 转到您的 .m2 文件夹并键入:
find . -name *progre*
此命令将显示每个带有标签 "in-progess" 的文件,即丢失或未完成的文件。
删除文件夹并再次尝试更新依赖项。
我知道这个回答有点晚了,但我遇到了同样的问题,我发现我可以通过两种方式解决它。
- 我能够删除
测试 标签并删除限制 - 我在做测试时遇到了一个问题,intellij 没有正确处理它,所以我确保它被标记为测试根,我把它从绿色 -> 灰色 -> 改回绿色测试根,然后解决了我的问题。
只是为了改善这种情况。
我设法像这样修复它:
之前,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>
如果您没有使用 spring 引导,而只使用 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 启动依赖项,如果您没有使用 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 项目,则无需添加 <version>
。