【Java设计模式】Arrange/Act/Assert模式:加强测试的清楚度和简洁性 ...

打印 上一主题 下一主题

主题 813|帖子 813|积分 2439

【Java设计模式】Arrange/Act/Assert模式:加强测试的清楚度和简洁性

一、概述

在Java开发中,良好的测试是确保代码质量的关键。Arrange/Act/Assert模式是一种用于组织单位测试的有用模式,它能够进步测试的可读性和可维护性。本文将详细先容该模式的意图、表明、编程示例以及实用场景。同时,还将提供示例代码的下载链接,方便读者进行学习和实践。
二、Arrange/Act/Assert设计模式的别名



  • Given/When/Then
三、Arrange/Act/Assert设计模式的意图

Arrange/Act/Assert模式在Java单位测试中至关重要。这种测试方法通过将单位测试明白地分为三个差别的部分:设置(Arrange)、实行(Act)和验证(Assert),来布局化单位测试。
四、Arrange/Act/Assert模式的详细表明及现实示例


  • 现实示例

    • 想象你正在组织一个小型活动。为了确保一切顺利进行,你遵照一种类似于Arrange/Act/Assert的模式:

      • Arrange:你设置场地,准备高朋名单,安排座位,并组织餐饮。


      • Act:你按照计划进行活动,欢迎高朋,提供食物,并遵照时间表。


      • Assert:活动结束后,你通过检查高朋反馈、确保全部任务完成以及检察一切是否按计划进行来评估活动的乐成。

    • 这种清楚的准备、实行和评估的分离有助于确保活动组织有序并取得乐成,反映了软件测试中Arrange/Act/Assert模式的布局化方法。

  • 通俗表明

    • Arrange/Act/Assert是一种测试模式,它将测试组织成三个清楚的步骤,便于维护。

  • 维基百科表明

    • Arrange/Act/Assert是一种用于在UnitTest方法中安排和格式化代码的模式。

五、Java中Arrange/Act/Assert模式的编程示例

我们须要为一个类编写全面且清楚的单位测试套件。在Java测试中使用Arrange/Act/Assert模式可以确保清楚度。
首先,我们先容要进行单位测试的Cash类。
  1. public class Cash {
  2.     private int amount;
  3.     Cash(int amount) {
  4.         this.amount = amount;
  5.     }
  6.     void plus(int addend) {
  7.         amount += addend;
  8.     }
  9.     boolean minus(int subtrahend) {
  10.         if (amount >= subtrahend) {
  11.             amount -= subtrahend;
  12.             return true;
  13.         } else {
  14.             return false;
  15.         }
  16.     }
  17.     int count() {
  18.         return amount;
  19.     }
  20. }
复制代码
然后,我们根据Arrange/Act/Assert模式编写单位测试。请注意每个单位测试中清楚分离的步骤。
  1. class CashAAATest {
  2.     @Test
  3.     void testPlus() {
  4.         //Arrange
  5.         var cash = new Cash(3);
  6.         //Act
  7.         cash.plus(4);
  8.         //Assert
  9.         assertEquals(7, cash.count());
  10.     }
  11.     @Test
  12.     void testMinus() {
  13.         //Arrange
  14.         var cash = new Cash(8);
  15.         //Act
  16.         var result = cash.minus(5);
  17.         //Assert
  18.         assertTrue(result);
  19.         assertEquals(3, cash.count());
  20.     }
  21.     @Test
  22.     void testInsufficientMinus() {
  23.         //Arrange
  24.         var cash = new Cash(1);
  25.         //Act
  26.         var result = cash.minus(6);
  27.         //Assert
  28.         assertFalse(result);
  29.         assertEquals(1, cash.count());
  30.     }
  31.     @Test
  32.     void testUpdate() {
  33.         //Arrange
  34.         var cash = new Cash(5);
  35.         //Act
  36.         cash.plus(6);
  37.         var result = cash.minus(3);
  38.         //Assert
  39.         assertTrue(result);
  40.         assertEquals(8, cash.count());
  41.     }
  42. }
复制代码
六、Java中何时使用Arrange/Act/Assert模式

在以下环境下使用Arrange/Act/Assert模式:

  • 进行单位测试,特别是在TDD和BDD的上下文中。
  • 在任何须要测试案例清楚和布局化的地方。
七、Java中Arrange/Act/Assert模式的现实应用


  • 该模式在Java中实践TDD和/或BDD方法学时特别有用。
  • 它在各种编程语言和测试框架中得到应用,如JUnit(Java)、NUnit(.NET)和xUnit框架。
八、Arrange/Act/Assert模式的长处和衡量


  • 长处

    • 通过清楚地分离设置、操作和验证步骤,进步了测试的可读性。
    • 每个测试都以可预测的方式布局化,使得测试更轻易维护和明白。
    • 通过将测试失败隔离到测试中的特定阶段,便于调试。

  • 衡量

    • 可能会在测试中引入冗余,因为类似的设置可能会在多个测试中重复。
    • 一些复杂的测试可能不太适合这种布局,须要在这三个阶段之外添加额外的上下文或设置。

九、源码下载

Arrange/Act/Assert模式示例代码下载
通过本文的先容,信赖各人对Java中的Arrange/Act/Assert模式有了更深入的相识。在现实开发中,公道运用该模式可以进步测试的服从和质量,为代码的稳定性提供有力保障。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

没腿的鸟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表