J'ai rencontré un problème avec NUnit et CallContext (en utilisant C#) où NUnit copie tout ce qui dans le contexte d'appel existant qui étend ILogicalThreadAffinative quand un nouveau thread est créé. Par exemple, dans l'exemple suivant une exception est toujours jeté dans le thread nouvellement créé:Copie NUnit ILogicalThreadAffinative éléments dans CallContext à de nouveaux threads
[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;
}
Si Foo ne dépasse pas ILogicalThreadAffinative le test passe. J'utilise .NET 2.0 (en raison d'autres restrictions, nous ne pouvons pas utiliser les nouvelles versions de .NET). J'ai également essayé d'utiliser les attributs Requires * disponibles dans la dernière version de NUnit mais sans succès. Est-ce que quelqu'un sait comment désactiver ce comportement?