[初学Spring Boot](2):单元测试报错:org.junit

本来:
是建项目时自动生成的测试类,结果还是报错了 。大无语事件 。
就是IDEA自建测试时导错包了 。
注释掉的时原来自导的,换成短的就好了 。
经查证,长的是升级版,,boot版本在2.2之后,方法不要修饰;
短的,是旧版,,boot版本在2.2之前,方法要用修饰 。
追问:
话是这么说,我的 Boot版本是2.7.4,Idea没有自建错啊,可为什么还是报错哦?
经测试,是用不起来啊,用4是没问题的,用5又报空指针错误 。
OK
行,行了下,可能是代码中的部分代码没有改干净 。果然,@注解是属于4的 。搜一下5的,@,改好之后,一下该有的包,自动完成 。
按住Ctrl键,鼠标放上面,ok,全部是了 。
再试
OK,又报错了 。

[初学Spring Boot](2):单元测试报错:org.junit

文章插图
读了一下错误原因,行嘞,把测试类加上这个注解吧 。至于为什么,马上下班过国庆了,这里不延伸了 。
该的包,Idea会帮你自动导入 。
OKOK
再试一次,成功!
okok
你注意到,上面我说,测试方法无需,我上面是有的 。于是,我搞个混合测试
好了,其实,和没有关系的 。加不加无所谓了 。
但是,必须是修饰,而且是void且无参 。感兴趣看源码吧 。这里不在展开 。后续有机会一起看喽 。
这样看,是升级了哈,不用拘泥修饰符了 。
总结
原来啊,是我用的架子填了的代码啊 。(是Idea自动建的,因为我用了 Boot2.7.4版本) 。
贴一下完整源码吧
方便像我一样的新手菜鸟学习使用 。
首先是文件目录结构,请用Idea新建项目
我的jdk1.8.0.33,对应Java8,next选Java8
命名什么的,自己决定 。如图,com.wfy下,右键,new-,新建了包,下新建class类,命名随意 。又在test目录下,新建类了 。注:test包系统自建 。
ok了,开始填代码:
//MyControllerpackage com.wfy.testimport org.springframework.stereotype.Controllerimport org.springframework.web.bind.annotation.RequesMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controller@ResponseBodypublic class MyController{@requestMapping("/MyLove")//浏览网址:localhost:8723/MyLovepublic String get(){return "Ky";}}
//HelloControllerpackage com.wfy.controller;import org.springframework.web.bind.annotion.RequestMapping;import org.springframework.web.bind.annotion.RestController;@RestControllerpublic 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!");}}