Модульное тестирование .NET для запрашиваемого уровня выполнения - PullRequest
1 голос
/ 15 декабря 2010

Нужно проверить на <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> в app.manifest. Я должен быть уверен, что это приложение будет иметь права администратора. Нужен сценарий NUnit, написанный на C # .NET.

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

Для того, чтобы сделать именно то, что вы сделали, я, наконец, разработал следующее, учитывая ваш подход "просто прочитайте 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);
        }
    }

Надеюсь, это поможет кому-то еще ...

0 голосов
/ 15 декабря 2010

Извините, но вы не можете выполнить такой тест с NUnit.

NUnit выполняет модульные тесты для классов, а не для исполняемых файлов.Хотя проверять нечего в вашем случае.Ваше заявление в app.manifest гарантирует, что приложение может быть выполнено только с самыми высокими привилегиями, если UAC активен.

Если вы мне не доверяете, попробуйте сами.Установите UAC на разных уровнях (Windows 7) или переключите его (Vista) и посмотрите!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...