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

lazybones @Wiki

cosUnitTest6

最終更新:

匿名ユーザー

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

UnitTest メソッドのテストの追加

Humanクラスに名前を取得するgetFirstNameメソッドと苗字を取得するgetFamilyNameメソッドを追加します。前提としては、名前と苗字は、半角のスペースで区切られているとします。
Class Sample.Human Extends %RegisteredObject [ ProcedureBlock ]
{

Property height As %Integer;

Property name As %String;

Method getFamilyName() As %String
{
	if (..name = "")
	{
		quit ""		
	}
	else
	{
		set pos = $FIND(..name," ")
		if (pos = 0)
		{
			quit ..name	
		}
		else
		{
			quit $EXTRACT(..name,pos,$LENGTH(..name))
		}
	}
}

Method getFirstName() As %String
{
	if (..name = "")
	{
		quit ""
	}
	else
	{		
		set pos = $FIND(..name," ")
		if (pos = 0)
		{
			quit ..name	
		}
		else
		{
			quit $EXTRACT(..name,1,pos-2)
		}
	}
}

}
そのテスト仕様も変更して以下のようにしました。
Include %outUnitTest

/// Unit Test for Human Class
Class Sample.FirstUnitTest Extends %UnitTest.TestCase [ ProcedureBlock ]
{

Method TestGetFamilyName()
{
	set p = ##class(Sample.Human).%New()
	set familyName = p.getFamilyName()
	DO $$$AssertEquals(familyName,"","My first name is nothing")	
	set p.name = "Taro Yamada"
	set familyName = p.getFamilyName()
	DO $$$AssertEquals(familyName,"Yamada","My family name is "_familyName)
}

Method TestConstructor()
{
	set p = ##class(Sample.Human).%New()
	set p.name = "Taro Yamada"
	set p.height = 180
	DO $$$AssertEquals(p.name,"Taro Yamada","My name is "_p.name)
	DO $$$AssertEquals(p.height,180,"My height is "_p.height)
}

Method TestGetFirstName()
{
	set p = ##class(Sample.Human).%New()
	set firstName = p.getFirstName()
	DO $$$AssertEquals(firstName,"","My first name is nothing")	
	set p.name = "Taro Yamada"
	set firstName = p.getFirstName()
	DO $$$AssertEquals(firstName,"Taro","My first name is "_firstName)
}

}
このテスト結果は、以下の様にパスです。
USER>do ##class(%UnitTest.Manager).RunTest ("Human:Sample.FirstUnitTest","/load=0/recursive=0/nodebug")

===============================================================================
Directory: c:\cache\unittests\human\
===============================================================================
Human begins ...
Skipping loading testsuite Human
  Sample.FirstUnitTest begins ...
    TestConstructor() begins ...
      AssertEquals:My name is Taro Yamada (passed)
      AssertEquals:My height is 180 (passed)
      LogMessage:Duration of execution: .002379 sec.
    TestConstructor passed
    TestGetFamilyName() begins ...
      AssertEquals:My first name is nothing (passed)
      AssertEquals:My family name is Yamada (passed)
      LogMessage:Duration of execution: .002858 sec.
    TestGetFamilyName passed
    TestGetFirstName() begins ...
      AssertEquals:My first name is nothing (passed)
      AssertEquals:My first name is Taro (passed)
      LogMessage:Duration of execution: .002835 sec.
    TestGetFirstName passed
  Sample.FirstUnitTest passed
Human passed

Use the following URL to view the result:
http://127.0.0.1:1972/csp/samples/%UnitTest.Report.cls?NS=USER&INDEX=45
USER>
記事メニュー
最近更新されたスレッド
ウィキ募集バナー