首页 >> 大全

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

2023-06-23 大全 47 作者:考证青年

本来:

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

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

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

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

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

追问:

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

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

OK

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

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

再试

OK,又报错了。

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

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

OKOK

再试一次,成功!

okok

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

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

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

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

总结

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

贴一下完整源码吧

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

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

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

命名什么的,自己决定。如图,com.wfy下,右键,new-,新建了包,下新建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!");}
}

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

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

修改一下,搞定,收工!

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

Over!再聊!

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了