UnitTestの実装
では、テストされるクラスの仕様を決定します。
この仕様が満足されているのかをテストしていきます。
この仕様が満足されているのかをテストしていきます。
ここでは、仮にHumanクラスをテストされるクラスとし仕様は以下の通りとします。
Human Class property name as %String property height as %Integer
名前のためのnameプロパティと身長のためのheightプロパティがあるだけの非常に単純なクラスです。
通常ならば、ここで、Humanクラスのコーディングを始めますが、TDDでは、テストするクラスからコーディングしていきます。
Include %outUnitTest
/// Unit Test for Human Class
Class Sample.FirstUnitTest Extends %UnitTest.TestCase [ ProcedureBlock ]
{
Method TestConstructor()
{
set p = ##class(Sample.Human).%New()
DO $$$AssertEquals(p.name,"", "Constructor Name" )
}
}
テストするクラスは、%UnitTest.TestCaseを継承する必要があります。
ここでは、FirstUnitTestというテストするクラスを作成しています。
次にテスト内容をメソッドに記述しますが、ここで重要なポイントが一つあります。
メソッド名をTestから始めるということです。Testから始まるメソッドのみがテストの対象になります。
ここでは、FirstUnitTestというテストするクラスを作成しています。
次にテスト内容をメソッドに記述しますが、ここで重要なポイントが一つあります。
メソッド名をTestから始めるということです。Testから始まるメソッドのみがテストの対象になります。
ここでの、テスト内容は、Humanクラスをインスタンス化し、そのインスタンスのnameプロパティが空であることをテストしています。
DO $$$AssertEquals(p.name,"", "Constructor Name" )は、始めの引数と2番目の引数が等しいときに真となり、
3番目の引数はそのままターミナルに出力されます。
この構文は他のUnitTestとほぼ同じです。これは%outUnitTestでマクロとして定義されています。
先頭のInclude %outUnitTestはそのために必要です。Assertなんとかの機能は他のUnitTestを参考にしてください。
3番目の引数はそのままターミナルに出力されます。
この構文は他のUnitTestとほぼ同じです。これは%outUnitTestでマクロとして定義されています。
先頭のInclude %outUnitTestはそのために必要です。Assertなんとかの機能は他のUnitTestを参考にしてください。