1. 什么是单元测试

(1)单元测试环节:

测试过程按照阶段划分分为:单元测试、集成测试、系统测试、验收测试等。相关含义如下:

1)       单元测试: 针对计算机程序模块进行输出正确性检验工作。

2)       集成测试: 在单元测试基础上,整合各个模块组成子系统,进行集成测试。

3)       系统测试: 将整个交付所涉及的协作内容都纳入其中考虑,包含计算机硬件、软件、接口、操作等等一系列作为一个整体,检验是否满足软件或需求说明。

4)       验收测试: 在交付或者发布之前对所做的工作进行测试检验。

单元测试是阶段性测试的首要环节,也是白盒测试的一种,该内容的编写与实践可以前置在研发完成,研发在编写业务代码的时候就需要生成对应代码的单元测试。单元测试的发起人是程序设计者,受益人也是编写程序的人,所以对于程序员,非常有必要形成自我约束力,完成基本的单元测试用例编写。

(2)单元测试特征:

由上可知,单元测试其实是针对软件中最小的测试单元来进行验证的。这里的单元就是指相关的功能子集,比如一个方法、一个类等。值得注意的是作为最低级别的测试活动,单元测试验证的对象仅限于当前测试内容,与程序其它部分内容相隔离,总结起来单元测试有以下特征:

1)       主要功能是证明编写的代码内容与期望输出一致。

2)       最小最低级的测试内容,由程序员自身发起,保证程序基本组件正常。

3)       单元测试尽量不要区分类与方法,主张以过程性的方法为测试单位,简单实用高效为目标。

4)       不要偏离主题,专注于测试一小块的代码,保证基础功能。

5)       剥离与外部接口、存储之间的依赖,使单元测试可控。

6)       任何时间任何顺序执行单元测试都需要是成功的。

2. 为什么要单元测试

(1)单元测试意义:

程序代码都是由基本单元不断组合成复杂的系统,底层基本单元都无法保证输入输出正确性,层级递增时,问题就会不断放大,直到整个系统崩溃无法使用。所以单元测试的意义就在于保证基本功能是正常可用且稳定的。而对于接口、数据源等原因造成的不稳定因素,是外在原因,不在单元测试考虑范围之内。

(2)使用main方法进行测试:

@PostMapping(value="/save")

public Map save(@RequestBody Student stu) {

studentService.save(stu);

    Map params = new HashMap<>();

    params.put("code",200);

    params.put("message","保存成功");

    return params;

}

假如要对上面的Controller进行测试,可以编写如下的代码示例,使用main方法进行测试的时候,先启动整个工程应用,然后编写main方法如下进行访问,在单步调试代码。

public static void main(String[] args) {

HttpHeaders headers = new HttpHeaders();

headers.setContentType(MediaType.APPLICATION_JSON);

String json = "{"name":"张三","className":"三年级一班","age":"20","sex":"男"}";

HttpEntity httpEntity = new HttpEntity<>(json, headers);

String url = "http://localhost:9092/student/save";

MainMethodTest test = new MainMethodTest();

ResponseEntity responseEntity = test.getRestTemplate().postForEntity(url, httpEntity, Map.class);

System.out.println(responseEntity.getBody());

}

(3)使用main方法进行测试的缺点:

1)       通过编写大量的main方法针对每个内容做打印输出到控制台枯燥繁琐,不具备优雅性。

2)       测试方法不能一起运行,结果需要程序员自己判断正确性。

3)       统一且重复性工作应该交给工具去完成。

3. 单元测试框架-JUnit

3.1 JUnit简介

JUni:JUnit是一个用于编写可重复测试的简单框架。它是用于单元测试框架的xUnit体系结构的一个实例。

JUnit的特点:

(1) 针对于Java语言特定设计的单元测试框架,使用非常广泛。

(2) 特定领域的标准测试框架。

(3) 能够在多种IDE开发平台使用,包含Idea、Eclipse中进行集成。

(4) 能够方便由Maven引入使用。

(5) 可以方便的编写单元测试代码,查看测试结果等。

JUnit的重要概念:

名称

功能作用

Assert

断言方法集合

TestCase

表示一个测试案例

TestSuite

包含一组TestCase,构成一组测试

TestResult

收集测试结果

JUnit的一些注意事项及规范:

(1) 测试方法必须使用@Test 修饰

(2) 测试方法必须使用public void 进行修饰,不能带参数

(3) 测试代码的包应该和被测试代码包结构保持一致

(4) 测试单元中的每个方法必须可以独立测试,方法间不能有任何依赖

(5) 测试类一般使用 Test作为类名的后缀

(6) 测试方法使一般用test 作为方法名的前缀

JUnit失败结果说明:

(1) Failure:测试结果和预期结果不一致导致,表示测试不通过

(2) error:

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: