zoukankan      html  css  js  c++  java
  • JUnit

    在测试Java程序时,要把代码放在main()中才能执行,每次测试都需要改动很多代码,从头开始测试,很不方便。

    Unit是一个测试框架,专门用于测试。

    Unit是一个系列,J表示Java,JUnit是测试Java的。

    常用的测试方式有2种:黑盒测试、白盒测试。

    顾名思义,黑盒盒子是黑的,略去了盒子中的内容,不关心盒子中是什么(程序是怎么执行的),只关心程序的输入、输出,提供数据,只看结果是否符合预期。

    白盒盒子是白的,可以看到盒子中的内容(程序执行过程)。黑盒不仅关心程序的输入、输出,还关心程序的具体执行过程。

    JUnit是白盒测试的一种。

    一般不直接在原代码上直接测试,而是在项目下新建一个test包用于测试,包名也可以用要测试的包的包名+Test来命名。

    包下新建测试类,类名用要测试的类的类名+Test来命名。

    测试方法的方法名一般是在原方法名+Test。

    比如要测试dao.StudentDao类的queryName()方法,对应的是测试类test.StudentDaoTest,或daoTest.StudentDaoTest,在这个类下写一个测试方法queryNameTest()。

    命名只是习惯,不是强制要求。

    测试方法的返回值必须是void,且必须是空参的。

    这2个是强制要求。

    可以把要测试的方法的方法体中的代码复制过来,改一下;也可以直接调用要测试的方法。

    在测试方法上加注解@Test。

    在Run|Debug  Configurations里进行相关配置。

    要测试的代码:

    package dao;
    
    public class StudentDao {
        public String queryName(int id){
            //数据库相关操作
            //......
            return "张三";
        }
    }

    测试类:

    package test;
    
    import dao.StudentDao;
    import org.junit.Test;
    
    public class StudentDaoTest {
        @Test
        public void queryNameTest(){
            StudentDao studentDao = new StudentDao();
            String result=studentDao.queryName(1);
            System.out.println(result);
        }
    }

    可以点行号右边图标run|debug测试方法,或者run|debug整个测试类中的测试方法。

    绿色表示通过测试,红色表示代码有问题。

    有时候是绿色的,但运行结果并不符合预期,比如说思路错了。

    我们可以使用断言来判断运行结果是否符合预期。

    package test;
    
    import dao.StudentDao;
    import org.junit.Assert;
    import org.junit.Test;
    
    public class StudentDaoTest {
        @Test
        public void queryNameTest(){
            StudentDao studentDao = new StudentDao();
            String result=studentDao.queryName(1);
            Assert.assertEquals("张三",result);  //静态方法
        }
    }

    第一个参数是预期的值,第二个参数是实际运行的值。如果2个值相等,就绿色通过,否则红色不通过。

    @Before会在每个@Test执行之前执行,常用于初始化。

    @After会在每个@Test之后执行,常用于回收资源。

    比如要执行2个@Test测试方法,在每个@Test执行之前都会调用@Before,在每个@Test执行之后都会调用@After。

    package test;
    
    import dao.StudentDao;
    import org.junit.After;
    import org.junit.Assert;
    import org.junit.Before;
    import org.junit.Test;
    
    public class StudentDaoTest {
        @Before
        public void init(){
    
        }
    
        @Test
        public void queryNameTest(){
            StudentDao studentDao = new StudentDao();
            String result=studentDao.queryName(1);
            Assert.assertEquals("张三",result);
        }
    
        @After
        public void destroy(){
    
        }
    }
  • 相关阅读:
    Install JDK In Ubuntu
    js初学—实现checkbox全选功能
    js初学—js全自定义单选框
    poj1679The Unique MST(次小生成树模板)
    hdu3486Interviewe(二分是错的)(ST算法RMQ + 判定上下界枚举)
    poj3974 Palindrome(Manacher最长回文)
    poj1734 Sightseeing trip(Floyd求无向图最小环)
    BZOJ1123 [POI2008]BLO(割点判断 + 点双联通缩点size)
    2.2 logistic回归
    神经网络的火热
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/11449087.html
Copyright © 2011-2022 走看看