• JUnit学习笔记


    JUnit-W3Cschool学习笔记

    JUnit 是 java 编程语言理想的单元测试框架。

    概述

    一个正式的编写好的单元测试用例的特点是:已知输入和预期输出,即在测试执行前就已知。已知输入需要测试的先决条件,预期输出需要测试后置条件。

    每一项需求至少需要两个单元测试用例:一个正检验,一个负检验。如果一个需求有子需求,每一个子需求必须至少有正检验和负检验两个测试用例。

    框架

    测试工具是一整套固定的工具用于基线测试。测试工具的目的是为了确保测试能够在共享且固定的环境中运行,因此保证测试结果的可重复性。它包括:

    • 在所有测试调用指令发起前的 setUp() 方法。
    • 在测试方法运行后的 tearDown() 方法。
     1 import junit.framework.*;
     2 
     3 public class JavaTest extends TestCase {
     4    protected int value1, value2;
     5 
     6    // assigning the values
     7    protected void setUp(){
     8       value1=3;
     9       value2=3;
    10    }
    11 
    12    // test method to add two values
    13    public void testAdd(){
    14       double result= value1 + value2;
    15       assertTrue(result == 6);
    16    }
    17 }

     

    测试套件意味捆绑几个测试案例并且同时运行。在 JUnit 中,@RunWith 和 @Suite 都被用作运行测试套件。以下为使用 TestJunit1 和 TestJunit2 的测试分类:

    当一个类被注解@RunWith或扩展了一个注解的类时@RunWith,JUnit将调用其引用的类以在该类中运行测试,而不是JUnit内置的运行器。JUnit 4中的套件是使用RunWith和一个名为Suite的自定义运行程序构建的。

    @RunWith(Suite.class)
     @SuiteClasses(ATest.class,BTest.class,CTest.class)
     公共类ABCSuite { 
     }

    例:

    import org.junit.runner.RunWith;
    import org.junit.runners.Suite;
    
    //JUnit Suite Test
    @RunWith(Suite.class)
    @Suite.SuiteClasses({ 
       TestJunit1.class ,TestJunit2.class
    })
    public class JunitTestSuite {
    }
    import org.junit.Test;
    import org.junit.Ignore;
    import static org.junit.Assert.assertEquals;
    
    public class TestJunit1 {
    
       String message = "Robert";   
       MessageUtil messageUtil = new MessageUtil(message);
    
       @Test
       public void testPrintMessage() { 
          System.out.println("Inside testPrintMessage()");    
          assertEquals(message, messageUtil.printMessage());     
       }
    }
    import org.junit.Test;
    import org.junit.Ignore;
    import static org.junit.Assert.assertEquals;
    
    public class TestJunit2 {
    
       String message = "Robert";   
       MessageUtil messageUtil = new MessageUtil(message);
    
       @Test
       public void testSalutationMessage() {
          System.out.println("Inside testSalutationMessage()");
          message = "Hi!" + "Robert";
          assertEquals(message,messageUtil.salutationMessage());
       }
    }

     

    测试运行器 用于执行测试案例。

    测试分类是在编写和测试 JUnit 的重要分类。几种重要的分类如下:

    • 包含一套断言方法的测试断言
    • 包含规定运行多重测试工具的测试用例
    • 包含收集执行测试用例结果的方法的测试结果

    JUnit - 基本用法

    创建一个类

    /*
    * 一个传入string类型并打印输出的类。
    */
    public class MessageUtil {
    
       private String message;
    
       //Constructor
       //@param message to be printed
       public MessageUtil(String message){
          this.message = message;
       }
    
       // prints the message
       public String printMessage(){
          System.out.println(message);
          return message;
       }   
    } 

    创建 Test Case 类

    • 创建一个名为 TestJunit.java 的测试类。
    • 向测试类中添加名为 testPrintMessage() 的方法。
    • 向方法中添加 Annotaion @Test。
    • 执行测试条件并且应用 Junit 的 assertEquals API 来检查。
    import org.junit.Test;
    import static org.junit.Assert.assertEquals;
    public class TestJunit {

       String message = "Hello World"; MessageUtil messageUtil = new MessageUtil(message);

       @Test
    @此处实际是判断的return是否正确
    /*
    *该Test注解告诉JUnit的是,public void到其附着方法可以运行作为一个测试用例。
    *为了运行该方法,JUnit首先构造一个新的类实例,然后调用带注释的方法。测试抛出的任何异常都将由JUnit报告为失败。
    *如果未引发任何异常,则假定测试成功。
    */
       public void testPrintMessage() {
          assertEquals(message,messageUtil.printMessage());
       }
    }

    创建 Test Runner 类

    import org.junit.runner.JUnitCore;
    import org.junit.runner.Result;
    import org.junit.runner.notification.Failure;
    
    //创建一个 TestRunner 类
    public class TestRunner { public static void main(String[] args) {

    //运用 JUnit 的 JUnitCore 类的 runClasses 方法来运行上述测试类的测试案例 Result result
    = JUnitCore.runClasses(TestJunit.class);

        //获取 Result Object 的 getFailures() 方法中的失败结果
    for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); }

        //获取 Result object 的 wasSuccessful() 方法中的成功结果 System.out.println(result.wasSuccessful()); } }
  • 相关阅读:
    live 555 freebsd 或centos 7.4 实现代理视频直播服务
    [教学] Log.d 日志调试查看(所有平台)
    [示例] 使用 TStopwatch 计时
    [安裝] Ubuntu Server 初试
    [改善] dcef3 for Firemonkey 浏览器控件,拉动窗体大小会闪烁的问题
    [示例] Drag And Drop for FireMonkey (Win & macOS)
    [原创] 改善 Firemonkey Canvas 几何绘图质量问题(移动平台)
    [示例] Firemonkey 画出 1 点像素的线
    [修正] Firemonkey TFrame 存档后,下次载入某些事件连结会消失(但源码还在)
    [问答] Firemonkey 控件继承后无法显示(空白)
  • 原文地址:https://www.cnblogs.com/hubwang/p/13208825.html
Copyright © 2020-2023  润新知