JUnit单元测试

单元测试

测试概述

在我们编写代码的时候,开发了很多功能,我们需要对这些已经开发好的功能提前进行测试,检测功能方法是否有漏洞,是否有bug,这个时候我们可以使用Junit单元测试对我们开发的代码进行测试。

Junit是Java语言的单元测试框架,属于第三方的一个工具,一般情况下我们需要导入相应的jar包,对于目前使用的集成开发工具自带的,我们今天是以Idear开发工具为主

Junit属于白盒测试

测试分类

  • 黑盒测试:大多数测试的细节隐藏起来,通常使用的一些软件进行测试
  • 白盒测试:大多数是需要写一些代码进行测试,我们能够看到一些测试的流程。

Junit使用

  • 步骤

    1. 下载一个Junit对应的版本jar包
    2. 添加jar依赖到工程里面
    3. 定义一个测试类
      • 建议:
        • 测试类名:被测试的类Test 如:UserTest、PeopleTest、CalculatorTest…
        • 测试类:应该放到测试资源包中
        • 测试包:xxx.xxx.test 如:com.zhiyou100.test.user
      • 定义测试方法:可以实现独立运行 Junit4/Junit5
        • 建议:
          • 方法名:test被测试的功能方法名 如:testGetName()、testAddNum()
          • 返回值:void
          • 参数列表:Junit4中–>空参 Junit5—>可以携带
          • 修饰符:一般Junit4中使用public Junit5中使用范围较广
    4. 给方法上添加注解@Test
  • 结果判定

    • 红色—>测试失败,中间可能出现了异常

    • 橘黄色 —> 测试失败 实际的值和我们期望的值不一致

    • 绿色 —>测试成功

    • 一般情况下,我们都是使用**断言(Assert)**操作来处理结果的

      示例代码:

      Assert.assertEquals(期望的值,实际的值);
      
  • Junit的其他测试相关的注解:

    JUnit4中

    • @Test 把一个方法标记为测试方法
    • @Before 每一个测试方法执行前会自动调用一次该方法(搭配@Test一起使用)
    • @After 每一测试方法执行后会自动调用一次该方法(搭配@Test一起使用)
    • @BeforeClass 所有的测试方法执行前执行一次,在测试类还没有进行实例化已经被加载到,标记的方法为静态方法(搭配@Test一起使用)
    • @AfterClass 所有的测试方法执行后执行一次,在测试类还没有进行实例化已经被加载到,标记的方法为静态方法(搭配@Test一起使用)
    • @Ignore 暂不执行该测试方法(待定的) (搭配@Test一起使用)

    Junit5中

    • @Test 把一个方法标记为测试方法
    • @BeforeEach 每一个测试方法执行前会自动调用一次该方法(搭配@Test一起使用)
    • @AfterEach 每一测试方法执行后会自动调用一次该方法(搭配@Test一起使用)
    • @BeforeAll 所有的测试方法执行前执行一次,在测试类还没有进行实例化已经被加载到,标记的方法为静态方法(搭配@Test一起使用)
    • @AfterAll 所有的测试方法执行后执行一次,在测试类还没有进行实例化已经被加载到,标记的方法为静态方法(搭配@Test一起使用)
    • @Disabled 暂不执行该测试方法(待定的) (搭配@Test一起使用)
  • 静态导入

    JDK5之后出现的新特性,只要在import后面加上关键字static,就可以把后面类的static修饰的变量和方法导入到本类中。调用的时候和调用本类中的静态成员没有区别。

    • 静态导入格式:import static 包名.类名.静态成员名 ----> import static 包名.类名.*
    • 注意事项:
      • 方法必须是静态的
      • 如果有多个静态方法重名,添加前缀,即添加类名
  • @Test属性操作

    • expected属性 期望测试中携带有异常信息,格式 @Test(expected = NullPointerException.class)

      如果出现异常,测试成功,如果未出现异常,测试失败

    • timeout属性,用来测试方法的执行时间 格式 @Test(timeout=5),单位为毫秒值,如果运行时间在设置值之内,则测试成功,如果超出了设置值范围,则测试失败。

上一篇:PPP和GSM


下一篇:Java学习笔记——单元测试(JUnit框架)