6

tSQLtテスト フレームワークでは、データベースに対してTRUSTWORTHY ON を設定し、サーバーに対して SQL CLR を有効にする必要があります。

なぜこれらが必要なのですか?CLR オブジェクトなしで同じ/類似の機能を実現することは可能ですか?

4

3 に答える 3

7

次の機能はCLRコードとして完全に実装されており、CLRなしで実行するのは特に困難です(おそらく不可能です)。

  • CaptureOuput:コンソールに出力された出力の記録と検証に役立ちます
  • SuppressOutput:オブジェクトの名前変更(特にFakeTable)に起因する警告をコンソールからクリーンに保つために内部的に使用されます
  • ResultSetFilter:複数の結果セットを生成するストアドプロシージャから生成された特定の結果セットをキャプチャするために必要
  • AssertResultSetsHaveSameMetaData:2つの結果セットのメタデータを比較するために使用されます
  • NewConnection:任意のSQLコマンドを新しい接続で実行できるようにします。接続の特定のプロパティが異なる必要がある場合のテストに役立ちます。(メモリが正しく機能する場合、これが今日のTRUSTWORTHY ONの唯一の理由である可能性があります)。

それ以外は、tSQLtはCLRを内部的に使用して、2つのテーブルを比較することで生成できる文字列など、非常に大きな文字列のフォーマットされた出力を生成します。オブジェクトの名前を変更するときに新しいオブジェクト名を生成するため(FakeTableやSpyProcedureなど)。

これらの機能を削除し、基本機能セットで機能するようにtSQLtを変更できると考えられます(もちろん、いくつかの制限があります)。ただし、tSQLtの将来のリリースで何が行われるかを見据えているため、CLRでさらに多くのことが行われる可能性が非常に高くなります。

于 2012-05-10T20:41:39.163 に答える
6

TRUSTWORTHY ON は不要になりました。リリース ノートを参照してください: http://tsqlt.org/748/tsqlt-v1-0-5873-27393-release-notes/

于 2016-03-19T13:59:39.597 に答える
3

tSQLt を使用する場合、おそらく SQL CLR を有効にする以外に選択肢はありません。

非対称キーを作成することで、データベースを TRUSTWORTHY ON に設定するという要件を回避する方法があります - http://msdn.microsoft.com/en-us/library/ms345106.aspxを参照してください。

これが受け入れられない場合は、データベースにオブジェクトを作成する必要のない他のデータベース ユニット テスト ツールがあります - たとえば、DbFit

于 2012-05-10T12:03:31.577 に答える