目录
Java语言的单元测试框架
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
单元测试(英语:Unit Testing)又称为模块测试 ,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。
单元测试允许程序员在未来重构代码,并且确保模块依然工作正确(复合测试)。这个过程就是为所有函数和方法编写单元测试,一旦变更导致错误发生,借助于单元测试可以快速定位并修复错误。
单元测试可以由两种方式完成:
手工测试 | 自动化测试 | |
---|---|---|
定义 | 手动执行测试用例并不借助任何工具的测试被称为人工测试。 | 借助工具支持并且利用自动工具执行用例被称为自动测试。 |
效率 | 消耗时间并单调:由于测试用例是由人力资源执行,所以非常缓慢并乏味。 | 快速自动化运行测试用例时明显比人力资源快。 |
人力资源要求 | 人力资源上投资巨大:由于测试用例需要人工执行,所以在人工测试上需要更多的试验员。 | 人力资源投资较少:测试用例由自动工具执行,所以在自动测试中需要较少的试验员。 |
可信度 | 可信度较低:人工测试可信度较低是可能由于人工错误导致测试运行时不够精确。 | 可信度更高:自动化测试每次运行时精确地执行相同的操作。 |
程式化 | 非程式化:编写复杂并可以获取隐藏的信息的测试的话,这样的程序无法编写。 | 程式化:试验员可以编写复杂的测试来显示隐藏信息。 |
特点:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = SpringConfig.class) public class UserServiceTest { @Autowired private TestService testService; @Test public void testSave(){ TestService.save(); } }
使用 @RunWith
注解指定运行器,使用 @ContextConfiguration
注解来指定配置类或者配置文件。
1)创建一个名为Junit的 SpringBoot 工程,工程目录结构如下
2)添加Junit依赖
junit junit 4.12
3)代码测试用例
在 com.example.junit.service下创建 TestService`接口,内容如下
package com.example.junit.services; public interface TestService { public void save(); }
在com.example.junit.services.impl包写创建一个TestServiceImpl类,使其实现 TestService 接口,内容如下
package com.example.junit.services.impl; import com.example.junit.services.TestService; import org.springframework.stereotype.Service; @Service public class TestServiceImpl implements TestService { @Override public void save() { System.out.println("save method"); } }
创建测试类,将TestService`注入到该测试类中
package com.example.junit; import com.example.junit.services.TestService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class JunitApplicationTests { @Autowired private TestService testService; @Test void Test() { testService.save(); } }
测试结果
SpringBoot
整合 junit
特别简单,分为以下三步完成
SpringBootTest @Autowired
单元测试允许程序员在未来重构代码,并且确保模块依然工作正确(复合测试)。这个过程就是为所有函数和方法编写单元测试,一旦变更导致错误发生,借助于单元测试可以快速定位并修复错误。