Передача аргументов в тестовый проект dotnet?C#

Место общения программистов C#
Ответить
Anonymous
 Передача аргументов в тестовый проект dotnet?

Сообщение Anonymous »

У меня есть тестовый класс, указанный ниже, в проекте модульного тестирования .NET Core 1.1 (а не в проекте xUnit Test) в Visual Studio 2017. Как передать аргументы командной строки в TestMethod?

Код: Выделить всё

[TestClass]
public class TestClass
{
[TestMethod]
public void TestMethod()
{
var args = Environment.GetCommandLineArgs();
var json = JsonConvert.SerializeObject(args);
throw new Exception(json);
}
}
Во многих местах в Интернете звучит так, будто можно просто поставить -- перед аргументами, которые вы хотите передать, но я не могу этого понять. работать.
Я пробовал следующие команды: Но все они каждый раз выводят это сообщение. Обратите внимание, что ни hello, ни world отсутствуют:

["C:\Users\____\.nuget\packages\microsoft .testplatform.testhost\15.0.0\lib\netstandard1.5\testhost.dll","--port","55032","--parentprocessid","24440"]

Первая строка — это просто имя работающей сборки, что довольно стандартно для первого аргумента командной строки. Я не знаю, откуда берутся аргументы --port или --parentprocessid.
Кроме того, эти варианты затрудняют тестирование dotnet с одной или несколькими предоставленными настройками запуска, которые содержат недопустимый токен (так в оригинале): Изменить: похоже, GetCommandLineArgs() не так уж и хорош вариант, даже если здесь он сработал.
Кроме того, ответ на этот вопрос на Social.msdn.microsoft.com от 2006 года гласит:

Способ создания экземпляров этих классов, чтобы VS мог проводить модульное тестирование, полностью отличается от обычного выполнения. Исполняемый файл не запускается как обычно, и ни вы, ни VS не можете предоставить ему аргументы. Классы создаются независимо от выполнения программы с использованием двоичного файла в качестве библиотеки классов. (так в оригинале)

Интересно, это все еще применимо к тесту dotnet?
Другие новости , этот парень из SO сомневался, что аргументы командной строки вообще можно передавать в DLL, но он ошибался:

[Прототип функции : ] void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);
[Rundll] вызывает функцию , передавая хвост командной строки, который представляет собой .


Подробнее здесь: https://stackoverflow.com/questions/429 ... st-project
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»