Nunit 2.5和AppDomain.CurrentDomain.SetPrincipalPolicy问题

时间:2010-10-05 12:03:44

标签: c# nunit

以下测试适用于.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;
}

奇怪的是,在测试失败一次后,我可以再次运行测试,直到我重新加载测试程序集。然后,它在第一次尝试时再次失败。

1 个答案:

答案 0 :(得分:1)

在测试前添加:

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

如果您还没有NUnit.Core.dll,则需要添加对它的引用。请注意,有两个类TestContext,一个在NUnit.Framework命名空间中,另一个在NUnit.Core命名空间中