本来:

是建项目时自动生成的测试类,结果还是报错了。大无语事件。

就是IDEA自建测试时导错包了。

注释掉的时原来自导的,换成短的就好了。

经查证,长的是升级版,junit5,spring boot版本在2.2之后,方法不要public修饰;

短的,是旧版,junit4,spring boot版本在2.2之前,方法要用public修饰。

追问:

话是这么说,我的Spring Boot版本是2.7.4,Idea没有自建错啊,可为什么还是报错哦?

经测试,junit5是用不起来啊,用4是没问题的,用5又报空指针错误。

OK

行,行了下,可能是代码中junit4的部分代码没有改干净。果然,@Before注解是属于4的。搜一下5的,@BeforeAll,改好之后,import一下该有的包,自动完成。

按住Ctrl键,鼠标放上面,ok,全部是junit5了。

再试

OK,又报错了。

读了一下错误原因,行嘞,把测试类加上这个注解吧。至于为什么,马上下班过国庆了,这里不延伸了。

该import的包,Idea会帮你自动导入。

OKOK

再试一次,成功!

okok

你注意到,上面我说,junit5测试方法无需public,我上面是有的。于是,我搞个混合测试

好了,其实,和public没有关系的。加不加无所谓了。

但是,junit4必须是public修饰,而且是void且无参。感兴趣看源码吧。这里不在展开。后续有机会一起看喽。

这样看,junit5是升级了哈,不用拘泥修饰符了。

总结

原来啊,是我用junit5的架子填了junit4的代码啊。(junit5是Idea自动建的,因为我用了Spring Boot2.7.4版本)。

贴一下完整源码吧

方便像我一样的新手菜鸟学习使用。

首先是文件目录结构,请用Idea新建项目

我的jdk1.8.0.33,对应Java8,next选Java8

命名什么的,自己决定。 如图,com.wfy下,右键,new-package,新建了controller包,下新建class类,命名随意。又在test目录下,新建类了。注:test包系统自建。

ok了,开始填代码:

//MyController
package com.wfy.testimport org.springframework.stereotype.Controller
import org.springframework.web.bind.annotation.RequesMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
@ResponseBody
public class MyController{@requestMapping("/MyLove")//浏览网址:localhost:8723/MyLovepublic String get(){return "Ky";}
}
//HelloController
package com.wfy.controller;import org.springframework.web.bind.annotion.RequestMapping;
import org.springframework.web.bind.annotion.RestController;@RestController
public class HelloController{@RequestMapping("/hello")//详情可看看我的《初学Spring Boot》(一)public String index(){return "Hello,World!";}
}
//TestApplicationTest
//此测试就是测试TestApplication类的。注意命名的技巧
package com.wfy.test;import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.extension.Extendwith;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;import static org.hamcrest.Mathchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import ststic org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;@SpirngBootTest
@ExtendWith(SpringExtension.class)
@AutoConfigureMockMvc
@TestInstance(TestInstance.Lifecycle.Per_CLASS)
class TestApplicationTests{private MockMvc mvc;//private MockMvc mvc1;@BeforeAllvoid setUp() throws Exception{mvc=MockMvcBuilders.standaloneSetup(new MyController()).build();//mvc1=MockMvcBuilders.standaloneSetup(new HelloController()).build();}@Testvoid contextLoads() throws Exception{     mvc.perform(MockMvcRequestBuilders.get("/MyLove").Accept(MediaType.APPLICATION_JSON)).andExpect(status().isOk()).andExpect(content().string(equalTo("Ky")));//mvc1.perform(MockMvcRequestBuilders.get("/hello")// .Accept(MediaType.APPLICATION_JSON))//.andExpect(status().isOk())//.andExpect(content().string(equalTo("Hello World!")));System.out.println("Yes!Got it!");}
}

这里,我本来只写了一个/MyLove的测试。其实,还有一个/hello的。按照这个样子加一个,结果报错了

这意思是断言错误。细心的朋友,可能会发现,mvc1赋值时,没有修改为我另一个HelloController,所以实例化错误了。

修改一下,搞定,收工!

先过国庆了,剩下的事,以后再说!

Over!再聊!

[初学Spring Boot](2):单元测试报错:org.junit.runners.model.InvalidTestClassError:Invalid test class相关推荐

  1. spring boot整合jsp报错 Whitelabel Error Page 500或者404 问题处理

    在刚刚用idea创建的spring boot 项目整合jsp时, 一直不能正常访问,报错信息如下图 There was an unexpected error (type=Internal Serve ...

  2. spring boot 搭建测试报错Whitelabel Error Page No message available

    报错内容如下: Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing ...

  3. 【学习之路】spring boot 整合mybatis报错 “serverTimezone=UTC“

    目录 一.踩坑原因 二.踩坑之前 三.报错原因 四.解决过程 方案一 方案二 方案三 方案四 方案五(重点) 结束 PS 一.踩坑原因 在学习spring boot 整合 mybatis-gegera ...

  4. Spring Boot连接MySQL报错“Internal Server Error”的解决办法

    报错信息如下: {timestamp: "2018-06-14T03:48:23.436+0000", status: 500, error: "Internal Ser ...

  5. Spring Boot 工程启动报错“org.springframework.context.ApplicationContextException: Unable to start ...“解决方案

    Spring Boot 工程在服务器上启动时候,一直报如下错误: POD名:xxx-service-2264321674-pdcd7: 部署版本号:1512978430164: POD阶段:Runni ...

  6. spring boot项目没报错,但就是启动不起来

    我们知道idea一般有两种类型启动spring boot项目,分别是debug.run.其中,使用debug模式时,会在加载到你打了断点的地方停下来,这时需要你要手动确认往下继续执行,如下图所示. 我 ...

  7. spring boot 整合mybatis报错“serverTimezone=UTC“

    报错信息如下: 分析原因以后,发现错误原因如下: 刚开始在配置文件中的数据库连接参数是这样的: 然后根据错误信息,改成这样,添加了"serverTimezone=Asia/Shanghai& ...

  8. java报错空指针异常_分析使用Spring Boot进行单元测试时,报出空指针异常

    使用Spring Boot进行单元测试时,发现使用@Autowired注解的类无法自动注入,当使用这个类的实例的时候,报出NullPointerException,即空指针异常. Spring Boo ...

  9. Spring Boot单元测试报错java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]

    一:运行test类方法时候报错 报错 java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]. S ...

最新文章

  1. JAVA中常用的异常处理情况
  2. 探索中国广电“智慧城市”未来转型路径
  3. Launch Instruments
  4. 作者:郑理,男,南京邮电大学计算机学院项目研究员。
  5. Caliburn.Micro学习笔记(四)----IHandleT实现多语言功能
  6. Java思维导图(3)
  7. 给网页添加背景图片 html+css
  8. word排版案例报告_Word操作技巧:图文混排,就是这么简单
  9. 线性代数笔记19——格拉姆-施密特正交化
  10. vue_drf之视频接口
  11. html扫码支付,WEB端第三方支付接入 - 支付宝 - 扫码支付
  12. ffmpeg 命令 监控屏幕,摄像头 udp推流 收流 。 包括低延迟处理
  13. java 计算 点是否在电子围栏范围内
  14. sql追加列mysql_mysql如何给表中添加列(字段)?
  15. 波士顿房价预测python代码_Python之机器学习-波斯顿房价预测
  16. Dance Collection
  17. GTD待办事项管理器都有那些功能
  18. 传值和传引用(米斯特吴22)
  19. 输入字数限制php,微博输入字数限制
  20. 史上最全——手把手开发Django网站建设

热门文章

  1. 推荐一位前普华永道 TechLeader,教你用 Python 赚到人生第一桶金
  2. 如何把后端返还的blob格式的文件进行本地下载?
  3. 重头开始学“程序员的数学”
  4. python实现人脸识别系统设计_基于ROS的人脸识别系统设计与实现
  5. react学习笔记(完整版 7万字超详细)
  6. 通达信股票接口获取股票信息的流程是什么?
  7. 关于echarts生成地图的二三事
  8. layui获取复选框的值
  9. mysql查询定时任务内容_MySQL的定时任务详解
  10. PHP 介绍php的一些基本语法,配合wamp,跟着案例来学习GET和POST请求( 非常详细 )