Day 4-Visual Studio 环境安装与介绍第一只测试专案 HelloBank (基础-3)

工欲善其事,必先利其器—该先装 Visual Studio 了

今天的内容会开始介绍我们要使用的整合开发环境 — Visual Studio,在维基百科是这样简述 Visual Studio:Microsoft Visual Studio(视觉工作室,简称 VS 或 MSVS)是微软公司的开发工具套件系列产品。VS 是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如 UML 工具、程序码管控工具、整合开发环境(IDE)等等。也是做为我目前工作系统的开发工具。以下用引用其他 Youtuber 的教学影片分别教学如何在 Windows 与 Mac 作业系统上安装。

Windows:Visual Studio 2022 | Download & Installation
Mac:How To Install Visual Studio for Mac | Install Visual Studio on macOS


Hello Bank 的「商业逻辑」专案内容与测试方向

做为本系列第一次写测试的专案,采用 .NET Standard 2.1 框架且不引入任何第三方套件做为本次的测试专案兼范例,而系统功能主题为银行帐户 (Account)。银行帐户本身带有的属性就是余额 (Balance);而银行帐户类别建构子提供了两种方式:有提供余额跟未提供余额,未提供余额皆预设帐户余额为零元;最後是商业逻辑方法,因重点在於如何撰写单元测试,因此此专案仅列出象徵性的功能:存款 (Add)、取款 (Withdraw) 与转帐 (TransferFundsTo)。

https://ithelp.ithome.com.tw/upload/images/20210904/20127378LUDLXAa7xg.png

而後本系列开发的专案,为了保持一致的程序风格,会统一属性、建构子与商业逻辑撰写方式

属性:
private double balance;

public double Balance
{
    get { return balance; }
}
建构子:
public BankAccount()
{

}

public BankAccount(double balance)
{
    this.balance = balance;
}
商业逻辑方法:
public void Add(double amount)
{
    if (amount < 0)
    {
        throw new ArgumentOutOfRangeException(nameof(amount));
    }

    balance += amount;
}

另一方面,单元测试的程序风格如下:

[Test]
public void Adding_Funds_Updates_Balance()
{
    // Arrange
    account = new BankAccount(1000);

    // Act
    account.Add(500);

    // Assert
    Assert.AreEqual(1500, account.Balance);
}

PS:而後都是依照 3A 原则:Arrange -> Act -> Assert,明天 Day 5 会介绍 3A 原则。


最後提供 Hello Bank Startup 的连结:https://github.com/SunShineYen/HelloBank (可先测试专案是否可以编译,又试着利用 IDE 跑测试)

Hello Bank 的内容是参考於 MatthiWare 的教学影片:https://www.youtube.com/c/MatthiWare/search?query=NUnit


<<:  友善的用户操作介面可降低人为操作问题发生率

>>:  DAY04 - [CSS+RWD] 视差背景

EP 26: MockData come back by (a little bit) DI design

Hello, 各位 iT邦帮忙 的粉丝们大家好~~~ 本篇是 Re: 从零开始用 Xamarin 技...

Day 28 - [Android APP] 06-RecyclerView与资料显示

这几天我们已经从 API 取得资料到包装成物件,再来就是资料显示罗。 这两天的范例会以对话页面为主,...

Day 04 Introduction to AI

Understand responsible AI Fairness - Without incor...

Day 22: Behavioral patterns - Mediator

目的 当系统内的物件们各自沟通的情况日益严重时,建立一个负责沟通的集中所,让元件们不在「直接」,而是...

MySQL学习_Day5

学习内容 联集、连接、子查询 联集 (union) 员工名字 union 客户名字 PS 两个表格间...