2010-10-05 48 views
1

下面的测试适用于.Net 3.5 + NUnit 2.4.8。但同样的测试不能使用.Net 4.0 + Nunit 2.5.7.10213。问题与Nunit 2.5和AppDomain.CurrentDomain.SetPrincipalPolicy

/// <summary> 
/// This test fails with unexpected exception: 
/// System.InvalidCastException : Unable to cast object of type 
/// 'System.Security.Principal.GenericPrincipal' to type 
/// 'System.Security.Principal.WindowsPrincipal'. 
/// </summary> 
[Test] 
public void GiventATest_WhenSettingDomainPrincipal_AccessingThreadcurrentPrincipalWorks() 
{ 
    AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal); 
    WindowsPrincipal currentUserWindowsPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal; 
} 

的奇怪的事情是,测试失败一次之后,我可以再次运行测试,它的工作,直到我重新加载测试组件。然后,它在第一次尝试时再次失败。

回答

1

测试之前补充一点:

NUnit.Core.TestContext.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent()); 

你将需要添加到nunit.core.dll程序的参考,如果你没有它了。请注意,有两个类TestContext,一个在NUnit.Framework命名空间,一个在NUnit.Core命名空间