您现在的位置是:首页 >技术杂谈 >Junit单元测试了解网站首页技术杂谈
Junit单元测试了解
简介Junit单元测试了解
一、为什么做单元测试
- 单元测试的意义第一点在于提高代码质量,单元测试能够检测代码中的潜在问题和错误,及时发现和修复,从而提高代码的质量
- 单元测试的意义第二点在于提高可维护性,在保证代码质量的前提下,可以减少后期代码的维护成本,提高可维护性
- 单元测试的意义第三点在于提高开发效率,高质量的代码减少了联调时间,从而提高开发效率
- 单元测试的意义第四点在于提高团队协作效率和质量
- 单元测试的意义第五点在于降低成本和风险
二、单元测试和自动化测试有何区别
- 单元测试是对于函数、方法、类进行测试,目的检查单元是否按照设计和预期工作,一般由开发人员进行
- 自动化测试是一种测试方法,使用工具或者脚本测试,脚本面向的一般为单接口,以及接口组成的流程测试,自动化测试可以提高测试效率和准确性,但需要投入更多的时间和资源。
三、Junit用法
1.什么是Junit
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
注意:Junit 测试也是程序员测试,即所谓的白盒测试,它需要程序员知道被测试的代码如何完成功能,以及完成什么样的功能。
2.Junit语法
1.编写被测试类
public class Calculator {
/**
* 传入两个参数,求和
* @param a
* @param b
* @return
*/
public int add(int a,int b){
return a+b;
}
/**
* 传入两个参数,求差
* @param a
* @param b
* @return
*/
public int sub(int a,int b){
return a-b;
}
}
2.编写测试类
public class CalculatorTest {
@Test
//测试 add()方法
public void testAdd(){
Calculator c = new Calculator();
int result = c.add(1, 2);
Assert.assertEquals(result, 3);
}
@Test
//测试 sub()方法
public void testSub(){
Calculator c = new Calculator();
int result = c.sub(2, 1);
Assert.assertEquals(result, 1);
}
}
3.Junit注解
-
- @Test: 测试方法
- (expected=XXException.class)如果程序的异常和XXException.class一样,则测试通过
- (timeout=100)如果程序的执行能在100毫秒之内完成,则测试通过
- @Ignore: 被忽略的测试方法:加上之后,暂时不运行此段代码
- @Before: 每一个测试方法之前运行
- @After: 每一个测试方法之后运行
- @BeforeClass: 方法必须必须要是静态方法(static 声明),所有测试开始之前运行,注意区分before,是所有测试方法
- @AfterClass: 方法必须要是静态方法(static 声明),所有测试结束之后运行,注意区分 @After
- @Test: 测试方法
4.Junit编写原则
-
- ①测试方法上必须使用@Test进行修饰
- ②测试方法必须使用public void 进行修饰,不能带任何的参数
- ③新建一个源代码目录来存放我们的测试代码,即将测试代码和项目业务代码分开
- ④测试类所在的包名应该和被测试类所在的包名保持一致
- ⑤测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
- ⑥测试类使用Test作为类名的后缀(不是必须)
- ⑦测试方法使用test作为方法名的前缀(不是必须)
5.Docker在单元测试中的应用
1. 提供环境隔离:Docker可以为每个测试用例提供一个独立的环境,避免测试用例之间的相互影响。
2. 快速构建测试环境:Docker可以快速构建需要的测试环境,节省了构建测试环境的时间。
3. 可重复性:Docker可以保证每次测试使用的环境是相同的,从而保证测试的可重复性。
4. 可移植性:Docker可以将测试环境打包成镜像,方便在不同的环境中使用,提高了测试的可移植性。
5. 版本控制:Docker可以将测试环境的镜像版本进行版本控制,方便回滚和追踪问题。
6.Docker常见命令
1. docker run:运行一个Docker容器
2. docker pull:从Docker镜像仓库拉取一个镜像
3. docker push:将一个Docker镜像推送到镜像仓库
4. docker build:通过Dockerfile构建一个Docker镜像
5. docker images:列出本地所有Docker镜像
6. docker ps:列出所有正在运行的Docker容器
7. docker stop:停止一个正在运行的Docker容器
8. docker rm:删除一个已经停止的Docker容器
9. docker rmi:删除一个Docker镜像
10. docker exec:在一个正在运行的Docker容器中执行一个命令
11. docker logs:查看一个Docker容器的日志
12. docker inspect:查看一个Docker容器的详细信息
13. docker network:管理Docker网络
14. docker-compose:使用docker-compose文件管理多个Docker容器
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。