Ninjectのv1で問題が発生し、StandardKernelをリセットしています。カーネルへのアクセスを提供するために使用する静的オブジェクトがあります。
public static class ObjectFactory
{
private static IKernel _kernel = new StandardKernel(new CanceisModule());
// Resolve methods snipped for brevity
public static void Reset()
{
_kernel = null;
_kernel = new StandardKernel(new CanceisModule());
}
}
問題は、さまざまな単体テスト(MSTestを使用)またはフィットネスフィクスチャでObjectFactoryを使用しようとすると発生します。新しいテストやフィクスチャの前に常にObjectFactory.Reset()メソッドを呼び出しますが、Resetが実際には機能せず、元のバインディングがそのまま残っているように見える場合があります。Ninjectのv2でIKernelオブジェクトをリセットする方法があることは知っていますが、まだその動きをする準備ができていません(そしてそれは私たちにとってかなり重要な動きです)。
なぜこれが発生するのかについて誰かがアドバイスを提供できますか?異なるランナーの別々のスレッドでテストが実行される方法に関連していると思いますが、どうすれば回避できますか?
前もって感謝します