当前位置: 首页 > 知识库问答 >
问题:

运行spring启动测试时出错,SpringRunner。未找到类

景成和
2023-03-14

当我试图从Spring Boot应用程序中调用JUnit测试用例时,我遇到了以下错误:

我在测试类中使用了这个注释。

@RunWith(SpringRunner.class)

在我从项目依赖项添加JUnit库后,它给出了以下错误:

java.lang.TypeNotPresentException: Type org.springframework.test.context.junit4.SpringRunner not present
    at sun.reflect.annotation.TypeNotPresentExceptionProxy.generateException(TypeNotPresentExceptionProxy.java:46)
    at sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:84)
    at com.sun.proxy.$Proxy2.value(Unknown Source)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:87)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:73)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:46)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:522)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.springframework.test.context.junit4.SpringRunner
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114)
    at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125)
    at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
    at sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:439)
    at sun.reflect.annotation.AnnotationParser.parseClassValue(AnnotationParser.java:420)
    at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:349)
    at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)
    at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
    at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
    at java.lang.Class.createAnnotationData(Class.java:3521)
    at java.lang.Class.annotationData(Class.java:3510)
    at java.lang.Class.getAnnotation(Class.java:3415)
    at org.junit.internal.builders.IgnoredBuilder.runnerForClass(IgnoredBuilder.java:10)
    ... 11 more

我的Spring启动版本是2.0.4。编辑器是SpringToolSuite。有人能帮我解决这个问题吗?

谢谢

共有3个答案

卢志业
2023-03-14

我尝试用Gradle创建另一个示例项目来运行Junit,它运行得很好,并且惊讶地发现下面是我在帖子中提到的两个创建依赖项的问题。如果我删除这些依赖项,它就可以正常工作。不确定这里发生了什么:

编译('org.springframework.boot:spring-boot-starter-data-jpa')编译('com.fasterxml.jackson.core:2.9.6')

石正卿
2023-03-14

我认为你错过了JUnit的依赖关系,因为这就像Spring试图在org/jUnit/中找到一些东西,但你没有。

我从不使用gradle,但对于maven来说应该是这样。

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.10</version>
</dependency>

希望这有帮助。

缑兴贤
2023-03-14

您不需要通过Eclipse的“JUnit库”引入JUnit 4依赖项。

相反,您应该使用JUnit 4版本,该版本是spring boot starter测试通过传递(并自动)拉入的依赖项。这将为您引入JUnit 4.12,这是所有现代版本的Spring Boot Test所必需的。

如果这无助于解决问题,请发布整个Gradle构建脚本(或者尽可能多地分享)。

 类似资料:
  • 问题内容: 在Eclipse中运行JUnit测试时出现此错误: 尽管我正在使用maven,但我尝试在类路径中添加库,而JUnit库位于POM依赖项中。 我已经尝试清理项目,并使用Eclipse的JUnit插件创建了一个新的JUnit测试用例,但仍然遇到相同的错误。 问题答案: 出现这种情况的原因是,使用时只有源代码正在编译(我使用的是maven 3.1.0,所以我不确定它是否始终如此)。 如果运行

  • 我试图通过testng运行简单的Cucumber/Java测试。xml。 所以,我有testng。xml: 我用的是runner。类,在其中我将路径/选项/etc设置为功能文件、步骤和报告: 但是当我运行testng时。xml作为TestNG套件,它: 1) 通过我自己的设想, 但是 我做错了什么?

  • 我第一次尝试用ApacheCXF和SpringBoot开发一个soap jax ws web服务;我对这些技术的使用非常陌生。为此,我创建了一个web应用程序类型的maven项目,旨在实现我的web层服务(知道dao层和专业将通过一个实际上是带有spring boot的project maven java应用程序的程序调用)。所有这些都耦合在一个企业应用程序中。 然后我在web项目中构建了apac

  • 当我试图将一个项目翻译成Spring Boot时,我遇到了一个错误——我无法理解我做错了什么。将后缀和前缀添加到属性文件中,试图更改jsp的位置,debager显示在控制器的方法中。我做错了什么?如果有任何帮助,我将不胜感激 错误: 此应用程序没有针对/错误的显式映射,因此您将其视为回退。 2018年7月17日星期二00:45:23出现意外错误(类型=未找到,状态=404)/批准jsp Sprin

  • 这是一个关于PHP单元测试的问题,给出了一个类NotFound错误。 背景资料 我正在使用Zend Studio 10.5开发Zend Framework 2应用程序。我加载了一些模块,包括和 FedcoUser是具有使用BJYAAuthorize的保护规则的控制器保护的模块: 使用Zend Studio 10.5本机菜单,我为上面的控制器创建了一个测试用例。当我运行它时,我得到以下错误: 我的假

  • 目前,我正在使用头盔和地形在GCP上部署我的詹金斯。这是我的地形代码: 但当我尝试在管道上运行docker命令时,我得到了以下错误: [vision_front_new_master-pth4udtqvsas7vicpco2ufhiem6b37lqylejt5bmat36ayx77ka]运行shell脚本 docker拉节点:碳 /home/jenkins/workspace/vision\u f