4

redgate の sql テスト内で tsqlt使い始めたところです。レガシー データベースで非常に大きなテーブル (多数の列) を処理する必要があります。そのようなテーブルにいくつかの偽のデータを挿入するためのベスト プラクティスは何ですか ('script as' 挿入ステートメントは非常に大きい) - したがって、単体テストの「配置部分」が文字通り読めなくなります。そのようなコードを因数分解できますか? また、挿入ステートメントをスクリプト化するだけでなく、いくつかの値を自動的に入力する方法はありますか? ありがとう。

4

1 に答える 1

4

挿入ステートメントのすべての列に入力する必要はないというコメントに同意します。

tSQLt.FakeTable は、計算列と ID 列だけでなく、すべての非 null 制約を列から削除します (ただし、これらの最後の 2 つは FakeTable への特定のパラメーターを使用して元に戻すことができます)。

したがって、テスト対象のコードに関連する列のみを入力する必要があります。これは通常、テーブルの列の小さなサブセットのみです。

これについては、この記事でもう少し詳しく書きました。この記事には、他にも知っておきたい「落とし穴」がいくつか含まれています。

さらに、同じテーブルを偽造してデータを挿入する必要がある多数のテストがある場合は、SetUp ルーチンの使用を検討することをお勧めします。これは、SetUp と呼ばれるテスト クラス (スキーマ) のストアド プロシージャです。そのスキーマの各テストの前に tSQLt によって呼び出されます。RedGate の SQL テスト ウィンドウにはまだ表示されませんが (改善として提案しました)、動作します。これにより、見にくくなる可能性がありますが、そのコードをモジュール化して、同一の繰り返しコードを減らします。

于 2014-01-11T08:20:35.477 に答える