首页 > 编程语言 >1:Unit test and main function-Java API 实战

1:Unit test and main function-Java API 实战

时间:2022-12-01 20:31:44浏览次数:62  
标签:function Java sum jar public API 测试 main Junit

(目录)

1. 抛出企业问题,脱离main测试,模块化编程

main方法是什么?

  • main方法就是进入程序的一扇门,而这个门只负责开和关,打开门可以实现某些功能,但这些功能只由门里面的东西来决定,而不是门
  • main是一个程序的入口点,而不应该是处理逻辑或者功能模块的点,main方法中的语句不应该有逻辑性的语句,而且代码应该是非常之少的,更复杂的东西不应该出现在main里,应该抽离main
	//以往的方式
public static void main(String[] args) {

    //2.本地测试
    
    //3.调用函数
    
    //4.看输出,查看结果是否符合预期

    //5.预期结果和测试结果是通过人工计算的
    
    //1.编写功能函数(方法)
    }

2. Junit单元测试的含义和用途

在项目中也只有一个main函数,但是一个项目是由多人完成的,我们不能总是合并全部的工作测试,然后再修改,这个问题如何解决呢?

  • Junit单元测试,即测试框架
  • “单元测试”很容易想到小学的英语单词单元听写,单元就是将一个大的块头分小,测试看是否与预期相同。小学一本英语教材有100个单词,分成五个单元去背,然后老师在一定的时间内听写这个单元的单词,查看学生掌握程度,就是单元测试
  • 在面向对象的过程中也是一样,将一个程序划分成单个类和单个方法,需要对这些方法进行测试看是否达到预期

3. 怎么获取各种Jar包?Maven Repository 获取各类各个版本的jar,这就是仓库。脱离老师发送给你的jar。

Junit的Java包下载详见:maven repository-JUnit

在这里插入图片描述

4. 使用Junit

1.导入jar包

DomeNew一个Directory,命名为lib

在这里插入图片描述

将桌面上的jar包直接拖拽到lib在这里插入图片描述 右键单击jarAdd as library ... 在这里插入图片描述

2.Junit的使用

先创建一个类专门用来对另外一个类做测试 在这里插入图片描述

在非测试类中编写方法, 在编写方法体时要staticreturn

   package com.study.shea;
   
   public class Calc {
      public static int sum (int numberA, int numberB){
          return numberA + numberB;
      }
   }
 

使用注释@Test调用Junit

   package com.study.shea;
  
   import org.junit.Test;
   
   public class CalcTest {
   
       @Test//使用这条注释来调用函数
       public void sum(){
          int sum = Calc.sum(1,2);
          System.out.println("sum = " + sum);
       }
   }

最后的预期结果会显示在原来的调试框中 在这里插入图片描述

遗留问题:测试的结果还是人工计算,并不是计算机帮忙完成的

5. Assert断言

在上面的操作中我们已经脱离了main方法的测试,但是还是没有脱离print打印的测试,这时就要用到Junit的断言测试方法Assert.assertEquals(),用来比较预期值与结果的差别

在这个测试过程中我们没有自己进行计算,没有使用main方法运行,也没有使用print进行打印,最后的结果就是测试的通过 在这里插入图片描述

在这里插入图片描述

但是这个测试还是十分有限的,如果只有1+2可以通过,那这个函数还是有问题的

6. 更进一步,合理编写随机测试,完善代码案例

进行随机测试,给的数是随机的,并不由人工干预,这样可以使得测试会更有说服力 在这里插入图片描述

同时,各测试之间互相并不干扰,subsum测试可以同时进行,当有一个测试出错时,并不会影响到另外一个函数的测试 在这里插入图片描述

在这里插入图片描述

标签:function,Java,sum,jar,public,API,测试,main,Junit
From: https://blog.51cto.com/yeatsliao/5904090

相关文章

  • eclipse启动失败Could not create the Java virtual machine
    eclipse启动失败CouldnotcreatetheJavavirtualmachine​​​​​​​​解决办法删掉C:\Windows\System32下面的java.exe,javaw.exe和javaws.exe三个文件......
  • java-字符串
    1.不可变字符串String类没有提供修改字符串的方法。可以采用这种方式进行修改Stringstr="greeting";str=str.substring(0,3)+"p!";2.检测字符串是否相等s.equals(t)一定不......
  • java强制类型转换
    将一个子类的引用付给一个超类变量,编译器是允许的。但将一个超类的引用赋给一个子类变量,必须进行类型转换。Managerboss=newManager();Employeestaff=newEmployee[2];s......
  • java 中类的加载顺序
    JAVA类首次装入时,会对静态成员变量或方法进行一次初始化,但方法不被调用是不会执行的;静态成员变量和静态初始化块级别相同,非静态成员变量和非静态初始化块级别相同。先初始......
  • java中集合中删除特定元素
    总结有三种方式:importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;publicclassMain{publicstaticvoidmain(String[]args){/*......
  • JAVA8-用lamda表达式和增强版Comparator进行排序
    以前的排序一般对象实现Comparable或者Comparator接口,经常是通过匿名类类实现。可以参见以前的博文Java中​​Comparable和Comparator比较​​现在看看使用lamda......
  • java-正则表达式
    1.一般流程Patternp=Pattern.compile("a*b");Matcherm=p.matcher("aaaaab");booleanb=m.matches();或booleanb=Pattern.matches("a*b","aaaaab");booleanb......
  • Java 集合框架4:Set
    目录Set1.概述2.SortedSet3.实现HashSetEnumSetCopyOnWriteArraySetBitSetSet1.概述Set是一个不允许包含重复元素,或者说是不允许包含包含满足e1.equals(e2)的两个元素......
  • JavaScript Everywhere All In One
    JavaScriptEverywhereAllInOnetagsjsNode.jsExpress.jsMongoDBApolloClientGraphQLAPIJWTOAuth2.0ReactReactNativeElectronhttps://github.com/......
  • AlmaLinux 9.1中安装java11
     001、系统[[email protected]]#cat/etc/redhat-releaseAlmaLinuxrelease9.1(LimeLynx)  002、测试java命令[root@PC1test]#javabash:java:c......