アットウィキロゴ
lazybones @Wiki
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

lazybones @Wiki

cosUnitTest2

最終更新:

匿名ユーザー

- view
メンバー限定 登録/ログイン

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から始まるメソッドのみがテストの対象になります。

ここでの、テスト内容は、Humanクラスをインスタンス化し、そのインスタンスのnameプロパティが空であることをテストしています。

DO $$$AssertEquals(p.name,"", "Constructor Name" )は、始めの引数と2番目の引数が等しいときに真となり、
3番目の引数はそのままターミナルに出力されます。
この構文は他のUnitTestとほぼ同じです。これは%outUnitTestでマクロとして定義されています。
先頭のInclude %outUnitTestはそのために必要です。Assertなんとかの機能は他のUnitTestを参考にしてください。

では、このクラスだけをコンパイルし、テストを開始します。
ここでのテストは、テスト対象のクラスが無いので、当然、失敗する事を想定しています。
それでは、完成したテストを実行してみましょう。
記事メニュー
最近更新されたスレッド
ウィキ募集バナー