1. 程式人生 > >JUnit - 測試框架

JUnit - 測試框架

什麼是 Junit 測試框架?

JUnit 是一個迴歸測試框架,被開發者用於實施對應用程式的單元測試,加快程式編制速度,同時提高編碼的質量。JUnit 測試框架能夠輕鬆完成以下任意兩種結合:

  • Eclipse 整合開發環境
  • Ant 打包工具
  • Maven 專案構建管理

特性

JUnit 測試框架具有以下重要特性:

  • 測試工具
  • 測試套件
  • 測試執行器
  • 測試分類

測試工具

測試工具是一整套固定的工具用於基線測試。測試工具的目的是為了確保測試能夠在共享且固定的環境中執行,因此保證測試結果的可重複性。它包括:

  • 在所有測試呼叫指令發起前的 setUp() 方法。
  • 在測試方法執行後的 tearDown() 方法。

讓我們來看一個例子:

import junit.framework.*;

public class JavaTest extends TestCase {
   protected int value1, value2;

   // assigning the values
   protected void setUp(){
      value1=3;
      value2=3;
   }

   // test method to add two values
   public void testAdd(){
      double result= value1 + value2;
      assertTrue(result == 6);
   }
}

測試套件

測試套件意味捆綁幾個測試案例並且同時執行。在 JUnit 中,@RunWith 和 @Suite 都被用作執行測試套件。以下為使用 TestJunit1 和 TestJunit2 的測試分類:

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());
   }
}

測試執行器

測試執行器 用於執行測試案例。以下為假定測試分類成立的情況下的例子:

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner {
   public static void main(String[] args) {
      Result result = JUnitCore.runClasses(TestJunit.class);
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
      System.out.println(result.wasSuccessful());
   }
}

JUnit 測試分類

測試分類是在編寫和測試 JUnit 的重要分類。幾種重要的分類如下:

  • 包含一套斷言方法的測試斷言
  • 包含規定執行多重測試工具的測試用例
  • 包含收集執行測試用例結果的方法的測試結果

from: http://wiki.jikexueyuan.com/project/junit/test-framework.html