MSTestを使用して統合テストをセットアップしました。私の統合テストは、偽のデータを作成してデータベースに挿入します(実際の依存関係)。私はすべて偽物[AssemblyCleanup]でクリーンアップガベージデータの統合テスト
public static EventAction Mock()
{
EventAction action = Fixture.Build<EventAction>().Create();
action.Add(false);
AddCleanupAction(action.Delete);
AppendLog("EventAction was created.");
return action;
}
:
public static void CleanupAllMockData()
{
foreach (Action action in CleanUpActions)
{
try
{
action();
}
catch
{
AppendLog($"Failed to clean up {action.GetType()}. It is possible that it was already cleaned up by parent objects.");
}
}
}
すべてのビジネス・オブジェクトのために、私は「偽」を作成し、DBに挿入し、このような方法を、持っています今、大きな問題があります。私の継続的な統合環境(TeamCity)では、テスト用に別々のデータベースを用意しており、テストを実行するたびに自分自身をクリーンアップしますが、ローカル環境では、さて、何らかの理由でテストをキャンセルすると、CleanupAllMockData()が呼び出されないため、ローカルデータベースにガベージデータが残ってしまいます。
これを処理する最善の方法は何ですか?私はMSTestのテストキャンセルを傍受する方法を見つけることができませんでした。
すべてのテストの後でCleanupAllMockData()を実行できますか? – Kris
@Kris、最初は、[TestCleanup]で実行していましたが、パフォーマンスに悪影響を与えました。試運転は20分〜6分かかりましたが、もう一度、私がテストをキャンセルすれば、偽物はきれいにならないでしょう。 –