使用junit单元测试报错“notestsfoundmatchingmethodtest01(test01)fromclassrequest@5387f9e0“(代码片段)

二木成林 二木成林     2023-03-02     203

关键词:

异常

src/main/java包下的类中执行单元测试报错:

java.lang.Exception: No tests found matching Method test01(Test01) from org.junit.internal.requests.ClassRequest@5387f9e0

	at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:50)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)


Process finished with exit code -1

错误代码

import org.junit.Test;

public class Test01 
    @Test
    public void test() 
        System.out.println("hello world");
    

原因

首先,代码没有任何问题,Test包也没有导错,junit版本如下:

        <!-- Junit测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

这是一个maven项目,有main/javatest/java两个不同的目录,分别用来放正式代码和测试代码。但导致上面这种问题的出现是这样的,先模拟下:

main/java/Test01.javatest/java/Test01.java类名相同,并且是执行的是main/java/Test01.java中的测试方法,而不是test/java/Test01.java中的方法。虽然类名相同,但是里面使用了@Test注解的方法名不同,两个类中的代码如下:
main/java/Test01.java

import org.junit.Test;

public class Test01 
    @Test
    public void test01() 
        System.out.println("hello world");
    

test/java/Test01.java

import org.junit.Test;

public class Test01 
    @Test
    public void test() 
        System.out.println("hello world");
    

此刻我们再来看错误提示:No tests found matching Method test01(Test01),意思是说在Test01这个类中没有方法test01(),注意这个Test01类指的是test/java/Test01.java,因为该类中只有一个名为test()的方法。

因此得以断定当test/javamain/java下的相同路径下同名的类中都使用@Test注解,那么一定是去找test/java下相同路径同名类中的同名方法来执行,如果方法不存在则报错,如果存在则执行该方法而非执行main/java中对应的方法。

注意,如果要发生上述异常必须满足下面的条件:

  • 相同路径。指的是类的路径必须同级,如test/java/Test01.javamian/java/Test01.java是同级路径,test/java/Test01.javamian/java/hello/Test01.java就不是同级路径了,也就不会发生冲突。
  • 相同类名。指的是在相同路径下的类名相同,如test/java/Test01.javamain/java/Test01.java既是相同路径又类名相同,test/java/Test02.javamain/java/Test01.java虽然路径相同但是类名不同,也不会发生冲突。
  • 方法名不同。指的是在相同路径下类名相同但是类中的方法正好main/java中有而test/java中没有才会报错冲突,如果test/java中有而main/java中没有不会有问题。但如果正好这个方法在main/javatest/java中都有,那么执行的就是test/java中的对应方法。

在满足上述条件后,执行main/java下的带有@Test注解的测试方法才会报上面这个错。

解决

  • 让它们的类路径不同
  • 让它们的类名不同
  • 让它们的方法名不同

总之,建议不要在main/java下写带有@Test注解的测试方法,更不要让它们冲突。

使用junit单元测试报错“notestsfoundmatchingmethodtest01(test01)fromclassrequest@5387f9e0“(代码片段)

异常在src/main/java包下的类中执行单元测试报错:java.lang.Exception:NotestsfoundmatchingMethodtest01(Test01)fromorg.junit.internal.requests.ClassRequest@5387f9e0 atorg.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40) atcom.intellij.junit4.JUnit4IdeaTest... 查看详情

junit单元测试成功,但是报错org.junit.runners.model.invalidtestclasserror:invalidtestclass

一、报错如下二、报错原因lz报错的原因引入单元测试包引入错误,lz引入的是org.junit.jupiter.api.Test这个包导致报错。三、解决方式把org.junit.jupiter.api.Test这个包替换成org.junit.Test这个包,再次运行报错消失。 查看详情

[转]methodinitializationerrornotfound:junit4单元测试报错问题

methodinitializationerrornotfound:JUnit4单元测试报错问题原文地址:http://blog.csdn.net/chenleixing/article/details/442578392015-03-14  分类:Maven-JUnit-JProfiler等工具(14) 版权声明:本文为博主原创文章,未经博主允许不得转载。  查看详情

junit单元测试报错java.lang.noclassdeffounderror

查看版本 junit-4.11以上版本不在包含hamcrest。解决方法:下载 junit-4.11以下版本或下载hamcrest-core-1.3.jar驱动包  查看详情

junit5单元测试使用spring依赖注入idea提示报错,但是实际运行是没问题的,怎么解决红字报错问题?

参考技术A建议你安装提示,排查下错误,是不是少jar或者少代码,或者jar包版本不对,jdk版本冲突等等 查看详情

如何解决junit4单元测试报错:methodinitializationerrornotfound

场景:用Junit4运行测试时候,无法运行,报methodinitializationerrornotfound。 看日志发现,是有重复的Feature Step  Case冲突导致。   解决方案:  1.在解决代码冲突时候,需要确保冲突文件整理完毕,再P... 查看详情

junit报错--initializationerror

  在使用eclipse做单元测试的时候,有时候会出现一种错误: initializationError  出现这种错误是因为使用的Junit是eclipse默认的3.x版本,所以必须要继承TestCase这个类【在测试类后extendsTestCase】  若不想继承TestCase类,则必... 查看详情

eclipse中使用junit4进行测试不报错怎么回事

参考技术A新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除、平方、开方的计算器类,然后对这些功能进行单元测试。这个类并不是很完美,我们故意保留了一些Bug用于演示,这些Bug在注释中都... 查看详情

junit单元测试(代码片段)

...一个开源的java语言的单元测试框架专门针对java语言设计,使用最广泛,JUnit是标准的单元测试架构java单元测试是最小的功能单元测试代码,单元测试就是针对单个java方法的测试 目的确保单个方法正常运行测试代码可以作为示例... 查看详情

错误记录android单元测试报错(exampleunittest.kt:(3,12):unresolvedreference:junit/test/assertequ)(代码片段)

文章目录一、报错信息二、解决方案一、报错信息Android中配置了单元测试,执行gradlew:app:testDebugUnitTest命令,进行单元测试,报如下错误:Y:\\002_WorkSpace\\001_AS\\SVG>gradlew:app:testDebugUnitTest>Task:app:compileDebugUnitTestKotlinFAILEDe:Y:\\0 查看详情

单元测试junit

...可复用的测试框架,是xUnit测试框架的一个子集。为什么使用JUnit使用JUnit 查看详情

junit单元测试报错:java.lang.noclassdeffounderror:org/hamcrest/selfdescribing

今天在复习的时候对对一些知识点进行巩固,用到了junit-4.12.jar,手动导入jar包,然后运行然后报错:java.lang.NoClassDefFoundError:org/hamcrest/SelfDescribing。刚开始我以为代码错了,看了看发现不是代码的问题,是导包的问题。然后查询... 查看详情

软件测试junit单元测试(代码片段)

...#xff1f;二、Junit1.什么是junit2.Junit概念——断言3.Junit的简单使用①导入依赖②编写测试用例4.SpringBoot环境下的junit使用①导入依赖②编写测试用例三、模拟数据——mockito框架的使用1.mock2.打桩Stub3.@MockBean和@SpyBean前 查看详情

软件测试junit单元测试(代码片段)

...#xff1f;二、Junit1.什么是junit2.Junit概念——断言3.Junit的简单使用①导入依赖②编写测试用例4.SpringBoot环境下的junit使用①导入依赖②编写测试用例三、模拟数据——mockito框架的使用1.mock2.打桩Stub3.@MockBean和@SpyBean前 查看详情

junit单元测试框架的使用

...www.open-open.com/lib/view/open1462177214142.htmlJUnit单元测试框架的使用我们写单元测试,一般都会用到一个或多个单元测试框架,在这里,我们介绍一下JUnit4这个测试框架。这是Java界用的最广泛,也是最基础的 查看详情

在 JUnit 单元测试中使用 jRAPL

】在JUnit单元测试中使用jRAPL【英文标题】:UsingjRAPLinJUnitunittest【发布时间】:2016-11-3012:12:58【问题描述】:有什么方法可以在单元测试中使用jRAPL或类似工具来测量能耗?类似:publicclassFooTest@BeforepublicvoidstartUp()doublebeginning=Energ... 查看详情

使用junit进行单元测试(代码片段)

eclipse如何使用junit部署测试在要测试的类java文件上右键,选择New->JunitTestCase/Suitehttps://mvnrepository.com/artifact/org.junit/junit5-engine/5.0.0-ALPHA在项目上右键RunAsJunitTest或者MavenTest即可运行全部的测试用例junit5=JUnitPlatform+JU 查看详情

如何使用junit进行单元测试

测试方法的要求:必须是public无返回值无参数@Testpublicvoidf1(){  .....}在@Test上按下Ctrl+1(快速锁定错误)引入Junit包在方法名上右键runas->junit就可以运行了。 查看详情