博客网站如何建设,seo营销培训,市长调度国庆假期安全稳定工作,洛阳建站哪家好Hi I’m Shendi 为什么使用Junit单元测试#xff1f;Junit的详解 Junit简介
Junit是一个Java语言的单元测试框架。 单元测试是一个对单一实体#xff08;类或方法#xff09;的测试 JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架#xff08;regression test…Hi I’m Shendi 为什么使用Junit单元测试Junit的详解 Junit简介
Junit是一个Java语言的单元测试框架。 单元测试是一个对单一实体类或方法的测试 JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架regression testing framework。Junit测试是程序员测试即所谓白盒测试因为程序员知道被测试的软件如何How完成功能和完成什么样What的功能。 为什么要用Junit
在我刚接触到Junit时有这样一个问题进行测试的话可以使用main函数那为什么要使用junit
找不到答案于是后面的开发我都没有使用到单元测试但用的人还是非常多的于是今天准备深入了解一下 总结有以下几点
比main代码少一点断言测试预期结果可单个多个运行多个共享数据有很多注解可以在之前…之后运行 主要是比较规范和方便吧main写完测试完后基本上都直接删掉了而这个不用 使用 Maven的引入就不列出了(SpringBoot都自带导入)这里列出Eclipse直接配置Junit
Eclipse内点击项目按AltEnter或右键Properties选择 Java Build Path选择Libraries选择Classpath点击Add Library Next Finish即可 接下来就可以非常简单的进行单元测试了 在想要运行的函数上加上 Test 注解鼠标点击函数名右键 RunAs - Junit Test 即可运行 运行后会在Junit选项卡中显示结果 绿勾代表运行正常这一次将三个函数都直接运行了 运行单个函数
如果需要运行单个函数可以用鼠标点击函数名当输入的光标在函数名上时右键运行即可
如果不行的话可以打开 outline 选项卡window - Show Views - Outline 右侧选中需要运行的函数右键运行即可 Assert类
用来断言测试基本上都是静态函数
例如有一个函数用来处理xxx我们知道函数返回1是正确结果于是可以这样写 上面预期和实际不符条条是红色的且 Failure Trace 下面显示了错误信息和行数 assert就是一个if的封装一般使用可能有问题用if不应该有问题的时候用assert Assert还有很多函数例如判断是否为true或者false下面列出一些
fail([String]) 代表失败可以有一参数为错误信息 assertSame([String],Object expected,Object actual) 对象的内存地址是预期的内存地址 assertNotSame 与assertSame相反 assertEquals([String],Object expected,Object actual) 值是预期值 assertNotEquals 与assertEquals相反 注解
除了 Test 注解之外还有一些其他的注解如下
注解描述Ignore被忽略的测试方法加上之后不执行此段代码与其他注解一起使用Before在每一个标注了 Test 的函数执行之前执行有一个Test就执行一次After在每一个标注了 Test 的函数执行之后执行有一个Test就执行一次BeforeClass必须是静态函数所有测试函数执行之前执行(包括Before)只执行一次AfterClass必须是静态函数所有测试函数执行之后执行(包括After)只执行一次SpringBoot整合Junit
新建SpringBoot项目时会自带Junit也可以手动加入依赖
!-- springboot的测试框架,里面有对junit4的依赖 --
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope
/dependency项目会有 src/test/java 文件夹供存放测试文件 在测试类上加上以下注解
RunWith(SpringRunner.class)SpringBootTest import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;RunWith(SpringRunner.class)
SpringBootTest
class DemoApplicationTests {Autowired DemoControl dc;Testpublic void test() {System.out.println(dc.test());}}RestController
public class DemoControl {public String test() {return test;}}单元测试运行即可看到结果 单元测试对事务的影响
如果在使用了Transactional注解那么在单元测试中的事务默认回滚。需要在方法上添加 Rollback(valuefalse) 才会提交事务。
在测试中处于对数据库的保护考虑请使用Rollback(valuetrue) 显式的回滚 END