1

単体テスト用にデータベースを準備する必要があるため、セットアップ方法でデータを削除したいと考えています。

DeleteAllData()ただし、データ アクセス レイヤーのメソッドを呼び出せるようにするために、ユニット テスト dll 以外の誰かにはなりたくありません。何ができるでしょうか?

4

5 に答える 5

3

メソッドへの呼び出しを行うコードを制限する方法を他の人が既に提案していますが、それらはセキュリティ境界を作成せず、スプーフィングされる可能性があります (両方のアセンブリに署名して証拠を検証しない限り)。

ビジネス ロジックに DeleteAllData というメソッドが含まれていると、かなり恐ろしく思えます。このメソッドが単体テストからのみ使用される場合は、おそらく単体テスト アセンブリに移動します。それが不可能な場合は、少なくともデバッグ モードでのみコンパイルするようにコードをコンパイラ ディレクティブに入れます。

于 2015-01-12T17:00:34.487 に答える
0

internalキーワードでマークします。MSDN ドキュメントから:

internal キーワードは、型および型メンバーのアクセス修飾子です。内部型または内部メンバーは、同じアセンブリ内のファイル内でのみアクセスできます

于 2015-01-12T15:39:37.673 に答える
0

質問に記載されていることを達成するためのもう1つのアプローチがあります。

VSTS 単体テストを使用している場合。

メソッドをクラス内でプライベートにして、他のクラスやアセンブリがアクセスできないようにします。

ユニット テストからプライベート メソッドを呼び出すには、PrivateObject を使用します。

PrivateObject の Microsoft ドキュメントは次のとおりです:-リンク

プライベート オブジェクトの使用方法 :-リンク

于 2015-01-13T04:28:37.260 に答える