コーディングが完了したので、簡単に動作確認(機能を検証)してみた。とりあえず、仕様は満たしているようである。
いきなり、結合テストをしてしまったが、単体テストをいくつか作成する。単体テストのフレームワークは、NUnitを使う。
単体テスト対象クラス
BalanceBaseクラス
Prodauctクラス
Colaクラス
インターフェースの作成
NSubstituteを使うので、上記クラスを継承するインターフェースが必要になる。Public修飾子のメソッドやプロパティしかテストできない。
IProductインターフェース
テストの対象となるプロパティが3個とメソッドが2個。
IProduct.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace VendingMachine
{
public interface IProduct
{
#region プロパティ
/// <summary>
/// 商品名
/// </summary>
string ProductName
{
get;
set;
}
/// <summary>
/// 在庫
/// </summary>
int Stock
{
get;
set;
}
/// <summary>
/// 商品価格
/// </summary>
int Price
{
get;
set;
}
#endregion
/// <summary>
///
/// </summary>
/// <returns></returns>
bool HasStock();
/// <summary>
///
/// </summary>
void SubtractStock();
}
}
IBalanceインターフェース
テストの対象となるメソッドが3個。
IBalance.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace VendingMachine
{
public interface IBalance
{
/// <summary>
///
/// </summary>
/// <param name="amount"></param>
/// <returns></returns>
bool Credit(int amount);
/// <summary>
///
/// </summary>
/// <param name="amount"></param>
/// <returns></returns>
bool Debit(int amount);
/// <summary>
///
/// </summary>
/// <param name="amount"></param>
/// <returns></returns>
int GetBalance();
}
}
インターフェースの継承
Productクラスは、IProductを継承するようソースコードを修正する。
Product.cs
public abstract class Product : IProduct
同様に、BindableBaseクラスは、IBalanceを継承するようソースコードを修正する。
BindableBase.cs
public class BalanceBase : IBalance
以上でテストケースを作成する準備は、整った。
↧