以下测试适用于.Net 3.5 + NUnit 2.4.8。但是相同的测试不能使用.Net 4.0 + Nunit 2.5.7.10213。
/// <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;
}
奇怪的是,在测试失败一次后,我可以再次运行测试,直到我重新加载测试程序集。然后,它在第一次尝试时再次失败。
答案 0 :(得分:1)
在测试前添加:
NUnit.Core.TestContext.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
如果您还没有NUnit.Core.dll,则需要添加对它的引用。请注意,有两个类TestContext,一个在NUnit.Framework命名空间中,另一个在NUnit.Core命名空间中