サンプルのシングルトンは次のとおりです。
public class Singleton
{
private static Singleton _instance = new Singleton();
private Singleton()
{
//do stuff
}
public static Singleton Get()
{
return _instance;
}
}
このシングルトン クラスで複数のテストを実行しようとしていますが、最初のテストは常に正常に機能します。new Singleton()
基本的に、コンストラクターを作成すると呼び出されることがわかります。または、Singleton.Get()
コンストラクターを呼び出すと呼び出されます。 テストは個別に正常に動作しますが、静的フィールドが設定されており、手動で null に設定しても、次のテストではリセットされません。ここでは自動テストが重要であるため、これは私にとって問題です。では、どうすればそれをリセットできますか?
これまでに AppDomain を調査したところ、各テストを独自のアセンブリに配置して手動で実行できることがわかりました。もちろん、VSはアセンブリごとに一意の AppDomain を既に使用しているため、自動的に実行できますが、これは多くのテスト アセンブリであり、少しばかげているようです。私はそれに代わるものを探しています。
注:コードの品質に関するアドバイスは必要ありません。 これは私がテストしているコードであり、私が書いたものではありません。最初にテストするまで、コードを変更しません。 私はこれを徹底的に調査しましたが、「シングルトンを使用しないでください」と回答されていない質問は見つかりませんでした。コードのアドバイスには興味がありません。これは CodeReview ではなく、StackOverflow です。
要求される追加情報
現在、Visual Studio のビルトイン テスト フレームワークを使用してテストを実行しています。MSBuild に移行しても、これが引き続き機能することを望みます。テストのために外部アプリケーションを手動でトリガーすることを除外するわけではありませんが、実行が難しくなります。