データベースと通信するユニット統合テストを作成するにはどうすればよいですか。例えば:
public int GetAppLockCount(DbConnection connection)
{
string query :=
"SELECT"+CRLF+
" tl.resource_type AS ResourceType,"+CRLF+
" tl.resource_description AS ResourceName,"+CRLF+
" tl.request_session_id AS spid"+CRLF+
"FROM sys.dm_tran_locks tl"+CRLF+
"WHERE tl.resource_type = 'APPLICATION'"+CRLF+
"AND tl.resource_database_id = ("+CRLF+
" SELECT dbid"+CRLF+
" FROM master.dbo.sysprocesses"+CRLF+
" WHERE spid = @@spid)";
IRecordset rdr = Connection.Execute(query);
int nCount = 0;
while not rdr.EOF do
{
nCount := nCount+1;
rdr.Next;
}
return nCount;
}
この場合、私はこのバグのコードを追い払おうとしています(IRecordset
空のレコードセットを返します)。
[UnitTest]
void TestGetLockCountShouldAlwaysSucceed();
{
DbConnection conn = GetConnectionForUnit_IMean_IntegrationTest();
GetAppLockCount(conn);
CheckTrue(True, "We should reach here, whether there are app locks or not");
}
今必要なのは、ユニット統合テストを実行するときにデータベースに接続する方法だけです。
テストランナーが見つけられるように、接続文字列をどこかに保存しますか?または.ini
または.xml
ファイル.config
?
注:言語/フレームワークに依存しません。コードには、意図的に次の要素が含まれています。
- C#
- デルファイ
- ADO.net
- ADO
- NUnit
- DUnit
そのポイントを家に追いやるために。