Saya mengalami masalah dengan NUnit dan CallContext (menggunakan C#) di mana NUnit menyalin apa pun dalam konteks panggilan yang ada yang memperluas ILogicalThreadAffinative ketika utas baru dibuat. Misalnya, dalam contoh berikut, pengecualian selalu diberikan pada thread yang baru dibuat:
[Test]
public void TestCopiedCallContext()
{
Foo f = new Foo();
f.a = 1;
CallContext.SetData("Test", f);
new Thread(new ThreadStart(delegate()
{
if (CallContext.GetData("Test") != null)
{
throw new Exception("Bad!");
}
})).Start();
Thread.Sleep(500);
}
class Foo : ILogicalThreadAffinative
{
public int a;
}
Jika Foo tidak memperluas ILogicalThreadAffinative maka pengujian berhasil. Saya menggunakan .NET 2.0 (karena batasan lain kami tidak dapat menggunakan versi .NET yang lebih baru). Saya juga mencoba menggunakan atribut Requires* yang tersedia di NUnit versi terbaru tetapi tidak berhasil. Adakah yang tahu cara mematikan perilaku ini?