C # с использованием статической переменной в качестве параметра для DeploymentItem - PullRequest
5 голосов
/ 25 января 2010

Я хочу использовать статическую переменную в качестве параметра DeploymentItem в модульном тесте MSTest, но, похоже, я не могу это сделать. Существует XSL-файл, который необходимо скопировать вместе с DLL-файлом при запуске модульного теста, и я определил местоположение как

private static string _xslPath = Path.Combine("MyProjectDir", "transform.xsl");

Однако, когда я тогда делаю следующее:

[TestMethod]
[DeploymentItem(DLL)]
[DeploymentItem(_xslPath)]
public void XmlToResultsTest() { }

Я получаю эту ошибку сборки:

Аргументом атрибута должно быть константное выражение, выражение typeof или выражение создания массива типа параметра атрибута

Ладно, ладно, хорошо, но мне кажется, что самому собирать путь просто грязно:

[DeploymentItem(@"MyProjectDir\transform.xsl")]

Я слишком разборчив в том, что хочу использовать Path.Combine? Есть ли другая альтернатива, которую я пропускаю? Я полагаю, я мог бы просто поместить XSL-файл в корневой каталог решений, чтобы мне не приходилось передавать каталог проекта как часть пути.

Ответы [ 2 ]

10 голосов
/ 25 января 2010

Атрибуты могут использовать только константные строки, поэтому нет: вы не можете сделать это (вам придется использовать предварительно объединенную версию или буквальную конкатенацию - не Path.Combine). Вы также можете использовать параметры развертывания тестового проекта (testrunconfig?), Но, честно говоря, я предпочитаю использовать подход NUnit, просто помечая файл (в csproj, как обычно) для развертывания. Мне еще предстоит выяснить, почему MS добавил отдельный способ определения этого ...

1 голос
/ 16 февраля 2015

Это должно работать:

[TestClass]
[DeploymentItem(TestParams.ConfigFileName)]
public class MyTest
{
    private static class TestParams
    {
        public const string ConfigFileName = "TestConfig.xml";
    }
// ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...