亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
使用 JUnit 5 進行單元測試
作者:ibm 發布時間:[ 2017/3/24 15:27:42 ] 推薦標簽:單元測試 Junit 5 單元測試工具

  對于所有的 Java 開發人員來說,你可以沒有聽說過 Spring 或是 Hibernate 框架,但是一定聽說過 JUnit。JUnit 作為 Java 單元測試的鼻祖與事實上的標準,在非常多的項目中被使用。即便新興的單元測試框架,如 TestNG 等,不斷出現,JUnit 的重要性仍然是不言而喻的。目前廣泛使用的是 JUnit 4 版本,而 JUnit 即將迎來它的新版本 JUnit 5。JUnit 5 在增加了很多的新特性的同時,又保持了對 JUnit 4 的向后兼容性。本文對 JUnit 5 進行了詳細的介紹。
  JUnit 5 簡介
  與之前的版本不同,JUnit 5 由三個不同的模塊組成。第一個模塊是 JUnit 平臺,其主要作用是在 JVM 上啟動測試框架。它定義了一個抽象的 TestEngine API 來定義運行在平臺上的測試框架,同時還支持通過命令行、Gradle 和 Maven 來運行平臺。第二個模塊是 JUnit Jupiter,包含了 JUnit 5 新的編程模型和擴展機制。第三個模塊是 JUnit Vintage,允許在平臺上運行 JUnit 3 和 JUnit 4 的測試用例
  JUnit 5 對 Java 運行環境的低要求是 Java 8。可以在 Eclipse 和 IntelliJ IDEA 上運行 JUnit 5 測試。本文的示例基于 IntelliJ IDEA 上開發,并使用 Gradle 作為構建工具。不過目前 IDE 對 JUnit 5 的支持還比較有限,只有新版本的 IntelliJ IDEA 原生支持,在其它 IDE 上需要使用命令行工具來運行。
  編寫測試用例
  JUnit 5 對編寫單元測試用例的方式做了一系列的改進,如下介紹。
  JUnit 5 注解
  JUnit 5 提供了一些常用的注解在編寫測試用例的時候使用。其中的一些注解和 JUnit 4 的注解有相同的名稱,不過所在的 Java 包變成了 org.junit.jupiter.api。常用的注解見表 1。
  表 1. JUnit 5 常用注解


  清單 1 中給出了使用這些注解編寫的單元測試用例。
  清單 1. 使用常用注解的單元測試用例
  @DisplayName("Calculator")
  public class CalculatorTest {
  private Calculator calculator;
  @BeforeAll
  public static void init() {
  System.out.println("Start testing");
  }
  @BeforeEach
  public void create() {
  this.calculator = new Calculator();
  }
  @AfterEach
  public void destroy() {
  this.calculator = null;
  }
  @AfterAll
  public static void cleanup() {
  System.out.println("Finish testing");
  }
  @Test
  @DisplayName("Test 1 + 2 = 3")
  public void testAdd() {
  assertEquals(3, this.calculator.add(1, 2));
  }
  @Test
  @DisplayName("Test 3 - 2 = 1")
  public void testSubtract() {
  assertEquals(1, this.calculator.subtract(3, 2));
  }
  @Disabled
  @Test
  @DisplayName("disabled test")
  public void ignoredTest() {
  System.out.println("This test is disabled");
  }
  }
  在這些注解中,實用的應該是@DisplayName。通過@DisplayName,開發人員可以為每個測試用例添加更具體的名字,更容易傳達用例所要測試的內容。
  通過@Tag 注解可以為測試類或方法添加標簽,但是不同的標簽只是通過字符串來進行區分,并不是類型安全的。一個拼寫錯誤可能造成標簽沒有被正確應用。更好的做法是使用類型安全的元注解(meta annotation)。編譯器會對元注解標簽的正確性進行驗證,從而減少無意的錯誤。清單 2 中定義了元注解標簽@Remote,對應于標簽 remote。
  清單 2. 元注解標簽
  @Target({ ElementType.TYPE, ElementType.METHOD })
  @Retention(RetentionPolicy.RUNTIME)
  @Tag("remote")
  public @interface Remote {
  }
  清單 3 中展示了@Remote 的用法。使用@Remote 的作用等同于@Tag("Remote"),為 testGetUser 方法添加了標簽 remote。使用@Remote 不僅提高了代碼的可讀性,也可以避免無意的拼寫錯誤帶來的問題。
  清單 3. 使用元注解標簽
  @DisplayName("Remote test")
  public class RemoteTest {
  @Test
  @Remote
  public void testGetUser() {
  System.out.println("Get user");
  }
  }
  JUnit 5 斷言
  斷言(assertions)是測試方法中的核心部分,用來對測試需要滿足的條件進行驗證。這些斷言方法都是 org.junit.jupiter.api.Assertions 的靜態方法。JUnit 5 內置的斷言可以分成如下幾個類別:
  第一類是簡單斷言,用來對單個值進行簡單的驗證,常用的方法見表 2。

上一頁1234下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 欧美极度极度另类 | 加勒比一本大道香蕉在线视频 | 五月婷在线 | 亚洲欧美黄色片 | 小明爱看看永久成人免费平台 | 欧美一级欧美三级在线观看 | 国产欧美日本 | 一级毛片无毒不卡直接观看 | 涩涩免费网站 | 黄色大片在线视频 | 天天久久| 日韩欧美一区二区三区中文精品 | 日韩精品一区二区三区中文 | 五月天婷婷激情网 | 国产男女视频 | 亚洲精品动漫在线观看 | 在线观看亚洲成人 | 快播视频在线观看 | 在线成年视频免费观看 | 国内精品一区二区三区 | xnxx美女18| 欧美a在线视频 | 成人精品视频在线观看 | 99久久九九 | 国产免费丝袜调教视频 | 日韩亚洲人成网站在线播放 | 久久99国产这里有精品视 | m乳娘调教人h | 日韩亚洲欧美在线观看 | 久爱www免费人成福利播放 | 国产苐1页影院草草影院 | 国产日韩欧美一区二区三区视频 | 一级片免费在线播放 | 精品视频网站 | 中文字幕日韩一区二区 | 欧美日韩一区二区三区视频 | 日本欧美强乱视频在线 | 久久亚洲综合网 | 人人添人人澡人人澡人人诱 | 午夜国产大片免费观看 | 欧美日韩国产一区二区三区不卡 |