2010-10-05 41 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命名空間