Я получаю исключение System.ArgumentException при запуске тестов MSTest для консольного приложения, содержащего метод MaC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Я получаю исключение System.ArgumentException при запуске тестов MSTest для консольного приложения, содержащего метод Ma

Сообщение Гость »


У меня есть базовое консольное приложение, разработанное на C# 10 и предназначенное для .NET 6.0. Приложение получает полный путь к файлу в качестве входных данных, проверяет его существование и записывает на консоль сообщение, указывающее, существует он или нет. Кроме того, у меня есть проект модульного тестирования, реализованный с помощью MSTest, содержащий три теста, охватывающие все возможные сценарии и операторы кода. Однако когда я выполняю тесты в Visual Studio 2022 или через командную строку, я сталкиваюсь со следующей ошибкой для каждого теста: «System.ArgumentException: Argument --parentprocessid не указан».

Вот код основной программы.

класс Программа { статическая пустота Main() { пока (правда) { Console.WriteLine("Введите путь к файлу (или «выйдите», чтобы выйти):"); нить? filePath = Console.ReadLine(); if (filePath?.ToLower() == "выход") перерыв; bool fileExists = File.Exists(filePath); если (файлСуществует) { Console.WriteLine("Файл существует."); } еще { Console.WriteLine("Файл не существует."); } } Console.WriteLine("Нажмите любую клавишу, чтобы выйти..."); Консоль.ReadKey(); } } Вот код модульных тестов.

с использованием Microsoft.VisualStudio.TestPlatform.TestHost; пространство имен FileCheckTests { [ТестКласс] публичный частичный класс UnitTests { [Метод испытания] общественная пустота FileExists_ShouldPrintFileExists() { строка filePath = Path.GetTempFileName(); вар consoleOutput = новый ConsoleOutput(); используя (consoleOutput) { Console.SetIn(новый StringReader(filePath)); Program.Main(ноль); } строковый вывод = consoleOutput.GetOutput(); Assert.IsTrue(output.Contains("Файл существует")); } [Метод испытания] общественная пустота FileDoesNotExist_ShouldPrintFileDoesNotExist() { строка filePath = «NonExistentFile.txt»; вар consoleOutput = новый ConsoleOutput(); используя (consoleOutput) { Console.SetIn(новый StringReader(filePath)); Program.Main(ноль); } строковый вывод = consoleOutput.GetOutput(); Assert.IsTrue(output.Contains("Файл не существует"); } [Метод испытания] общественная недействительность ExitCommand_ShouldExitProgram() { строка filePath = «выход»; вар consoleOutput = новый ConsoleOutput(); используя (consoleOutput) { Console.SetIn(новый StringReader(filePath)); Program.Main(ноль); } строковый вывод = consoleOutput.GetOutput(); Assert.IsFalse(output.Contains("Файл существует") || output.Contains("Файл не существует"); } } } Наконец, вот класс, который модульные тесты используют для обработки вывода консоли.

пространство имен FileCheckTests { публичный частичный класс UnitTests { частный класс ConsoleOutput: IDisposable { частный StringWriter stringWriter; частный TextWriter originalOutput; публичный ConsoleOutput() { stringWriter = новый StringWriter(); исходныйВыход = Console.Out; Console.SetOut(stringWriter); } общедоступная строка GetOutput() { вернуть stringWriter.ToString(); } публичная недействительность Dispose() { Console.SetOut(оригинальныйВыход); stringWriter.Dispose(); } } } } На данный момент я сделал следующее, чтобы попытаться разрешить исключение:\
[*]Обновлена ​​платформа MSTest и тестовый адаптер. [*]Перестроил решение. [*]Решение удалено. [*]Перезапустил Visual Studio. [*]Добавлены аргументы string[] по умолчанию обратно в сигнатуру метода Main и передан пустой массив строк в вызов Program.Main() для каждого теста.
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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