NUnit 및 CallContext (C# 사용)에서 NUnit이 새 스레드가 생성 될 때 ILogicalThreadAffinative를 확장하는 기존 호출 컨텍스트의 내용을 복사하는 문제가 발생했습니다. 예를 들어, 다음 예제에서 예외가 항상 새로 만든 스레드에서 발생합니다 : 푸 ILogicalThreadAffinative을 연장하지 않는 경우NUnit은 CallContext의 ILogicalThreadAffinative 항목을 새 스레드로 복사합니다.
이[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;
}
다음 테스트를 통과. .NET 2.0을 사용하고 있습니다 (다른 제한 사항으로 인해 최신 버전의 .NET을 사용할 수 없음). 나는 또한 최신 버전의 NUnit에서 사용할 수있는 Requires * 속성을 사용해 보았지만 성공하지 못했습니다. 아무도이 동작을 해제하는 방법을 알고 있습니까?