Код: Выделить всё
[TestClass]
public class TestClass
{
[TestMethod]
public void TestMethod()
{
var args = Environment.GetCommandLineArgs();
var json = JsonConvert.SerializeObject(args);
throw new Exception(json);
}
}
Я пробовал следующие команды:
Код: Выделить всё
dotnet test TestProject.csproj -- hello=worldКод: Выделить всё
dotnet test TestProject.csproj -- --hello worldКод: Выделить всё
dotnet test TestProject.csproj -- -hello world
["C:\Users\____\.nuget\packages\microsoft .testplatform.testhost\15.0.0\lib\netstandard1.5\testhost.dll","--port","55032","--parentprocessid","24440"]
Первая строка — это просто имя работающей сборки, что довольно стандартно для первого аргумента командной строки. Я не знаю, откуда берутся аргументы --port или --parentprocessid.
Кроме того, эти варианты затрудняют тестирование dotnet с одной или несколькими предоставленными настройками запуска, которые содержат недопустимый токен (так в оригинале):
Код: Выделить всё
dotnet test TestProject.csproj -- -hello=worldКод: Выделить всё
dotnet test TestProject.csproj -- --hello=world
Кроме того, ответ на этот вопрос на 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
Мобильная версия