对requestedExecutionLevel的.NET单元测试

时间:2010-12-14 23:30:56

标签: c# .net unit-testing

需要在app.manifest中测试<requestedExecutionLevel level="highestAvailable" uiAccess="false" />。 我需要确定,该应用程序将具有管理员权限。 需要用C#.NET编写的NUnit场景。

2 个答案:

答案 0 :(得分:2)

需要完成你所做的事情,我最终开发了以下内容,因为你的“只需阅读xml”方法。请注意,为了使其正常工作,我还必须更改我的testsettings 文件,以手动部署app.manifest文件,以便它可以在那里阅读。

    public TestContext TestContext { get; set; }

    [TestMethod]
    public void Proper_Permissions_Set_In_app_manifest()
    {
        // Arrange
        var expected = "requireAdministrator";
        using (StreamReader reader = new StreamReader(Path.Combine(TestContext.TestDeploymentDir, "app.manifest")))
        {
            var doc = XDocument.Load(reader.BaseStream);
            var node = doc.Descendants("{urn:schemas-microsoft-com:asm.v3}requestedExecutionLevel").First();
            var attribute = node.Attribute("level");

            // Act
            var actual = attribute.Value;

            // Assert
            Assert.AreEqual(expected, actual);
        }
    }

我希望这有助于其他人...

答案 1 :(得分:0)

抱歉,您无法使用NUnit执行此类测试。

NUnit对类执行单元测试,而不是对可执行文件执行单元测试。虽然没有什么可以测试你的情况。您在app.manifest中的声明授予应用程序只能以UAC处于活动状态的最高权限执行。

如果你不相信我,请自己尝试。将UAC设置为不同级别(Windows 7)或切换它(Vista)并查看!