0


大数据必学Java基础(八十三):Junit单元测试

Junit单元测试

一、引入

1、软件测试的目的

软件测试的目的是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

2、测试分类

2.1、黑盒测试

软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。

因此黑盒测试又叫功能测试。

2.2、白盒测试

Junit属于白盒测试。

软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序的所有逻辑路径进行测试,通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。

因此白盒测试又称为结构测试。

二、没有Junit的情况下如何测试

在没有使用Junit的时候,缺点:

(1)测试一定走main方法,是程序的入口,main方法的格式必须不能写错。

(2)要是在同一个main方法中测试的话,那么不需要测试的东西必须注释掉。

(3)测试逻辑如果分开的话,需要定义多个测试类,麻烦。

(4)业务逻辑和测试代码,都混淆了。

代码:

  1. package com.lanson.calculator;
  2. /**
  3. * @Auther: Lansonli
  4. */
  5. public class Calculator {
  6. //加法:
  7. public int add(int a,int b){
  8. return a+b;
  9. }
  10. //减法:
  11. public int sub(int a,int b){
  12. return a-b;
  13. }
  14. }
  15. public class Test {
  16. //这是一个main方法,是程序的入口:
  17. public static void main(String[] args) {
  18. //测试加法:
  19. Calculator cal = new Calculator();
  20. int result = cal.add(10, 20);
  21. System.out.println(result);
  22. //测试减法:
  23. /* int result = cal.sub(30, 10);
  24. System.out.println(result);*/
  25. }
  26. }
  27. public class Test02 {
  28. //这是一个main方法,是程序的入口:
  29. public static void main(String[] args) {
  30. Calculator cal = new Calculator();
  31. //测试减法:
  32. int result = cal.sub(30, 10);
  33. System.out.println(result);
  34. }
  35. }

三、Junit的使用

1、一般测试和业务做一个分离,分离为不同的包:

建议起名:公司域名倒着写+test

以后测试类就单独放在这个包下

2、测试类的名字:****Test --->见名知意

3、测试方法的定义 --》 这个方法可以独立运行,不依托于main方法

建议:

名字:testAdd() testSub() 见名知意

参数:无参

返回值:void

4、测试方法定义完以后,不能直接就独立运行了,必须要在方法前加入一个注解: @Test

5、导入Junit的依赖的环境:

6、代码:

  1. package com.lanson.test;
  2. import com.lanson.calculator.Calculator;
  3. import org.junit.Test;
  4. /**
  5. * @Auther: Lansonli
  6. */
  7. public class CalculatorTest {
  8. //测试add方法
  9. @Test
  10. public void testAdd(){
  11. System.out.println("测试add方法");
  12. Calculator cal = new Calculator();
  13. int result = cal.add(10, 30);
  14. System.out.println(result);
  15. }
  16. //测试sub方法
  17. @Test
  18. public void testSub(){
  19. System.out.println("测试sub方法");
  20. Calculator cal = new Calculator();
  21. int result = cal.sub(10, 30);
  22. System.out.println(result);
  23. }
  24. }

7、判定结果

绿色:正常结果

红色:出现异常

8、即使出现绿色效果,也不意味着你的测试就通过了,因为代码中逻辑也可能出现问题,这种情况怎么解决呢?

加入断言

  1. package com.lanson.test;
  2. import com.lanson.calculator.Calculator;
  3. import org.junit.Assert;
  4. import org.junit.Test;
  5. /**
  6. * @Auther: Lansonli
  7. */
  8. public class CalculatorTest {
  9. //测试add方法
  10. @Test
  11. public void testAdd(){
  12. System.out.println("测试add方法");
  13. Calculator cal = new Calculator();
  14. int result = cal.add(10, 30);
  15. //System.out.println(result);--》程序的运行结果可以不关注
  16. //加入断言:预测一下结果,判断一下我预测的结果和 实际的结果是否一致:
  17. Assert.assertEquals(40,result);//第一个参数:预测结果 第二个参数:实际结果
  18. }
  19. //测试sub方法
  20. @Test
  21. public void testSub(){
  22. System.out.println("测试sub方法");
  23. Calculator cal = new Calculator();
  24. int result = cal.sub(10, 30);
  25. System.out.println(result);
  26. }
  27. }

四、@Before_@After

@Before:

某一个方法中,加入了@Before注解以后,那么这个方法中的功能会在测试方法执行前先执行

一般会在@Beforer修饰的那个方法中加入:加入一些申请资源的代码:申请数据库资源,申请IO资源,申请网络资源。。。

@After:

某一个方法中,加入了@After注解以后,那么这个方法中的功能会在测试方法执行后先执行

一般会在@After修饰的那个方法中加入:加入释放资源的代码:释放数据库资源,释放IO资源,释放网络资源。。。

代码:

  1. package com.lanson.test;
  2. import com.lanson.calculator.Calculator;
  3. import org.junit.After;
  4. import org.junit.Assert;
  5. import org.junit.Before;
  6. import org.junit.Test;
  7. /**
  8. * @Auther: Lansonli
  9. */
  10. public class CalculatorTest {
  11. @Before
  12. public void init(){
  13. System.out.println("方法执行开始了。。。");
  14. }
  15. @After
  16. public void close(){
  17. System.out.println("方法执行结束了。。。");
  18. }
  19. //测试add方法
  20. @Test
  21. public void testAdd(){
  22. System.out.println("测试add方法");
  23. Calculator cal = new Calculator();
  24. int result = cal.add(10, 30);
  25. //System.out.println(result);--》程序的运行结果可以不关注
  26. //加入断言:预测一下结果,判断一下我预测的结果和 实际的结果是否一致:
  27. Assert.assertEquals(40,result);//第一个参数:预测结果 第二个参数:实际结果
  28. }
  29. //测试sub方法
  30. @Test
  31. public void testSub(){
  32. System.out.println("测试sub方法");
  33. Calculator cal = new Calculator();
  34. int result = cal.sub(10, 30);
  35. System.out.println(result);
  36. }
  37. }

  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
标签: junit 单元测试 Java

本文转载自: https://blog.csdn.net/xiaoweite1/article/details/127434551
版权归原作者 Lansonli 所有, 如有侵权,请联系我们删除。

“大数据必学Java基础(八十三):Junit单元测试”的评论:

还没有评论