Ввод неисправного трубопровода в подпроцесс C# - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь написать тест Gradescope, чтобы проверить, является ли распечатанный результат программы c# ожидаемым.

Я делаю это, открывая программу для тестирования как подпроцесс, и я перенаправить ввод в программу и вывод в тестовую программу.

TestCode:

var runProg = new Process{
        StartInfo = new ProcessStartInfo
        {
            FileName = "/bin/bash",
            Arguments = "-c ./prog.exe", //change file here
            UseShellExecute = false,
            RedirectStandardInput = true,
            RedirectStandardOutput = true,
            CreateNoWindow = true
        }
    };

    runProg.Start();
    runProg.StandardOutput.ReadLine();
    runProg.StandardInput.WriteLine("someinput");
    var output = runProg.StandardOutput.ReadLine();
    runProg.WaitForExit();
    Assert.AreEqual(output, "expectedoutput");

Программный код:

Console.WriteLine("Please provide some input");
var output = Console.ReadLine();
Console.WriteLine("expectedoutput");

Я использую моно с использованием: mcs -target:library -pkg:nunit -out:test.dll test.cs

Это работает только в моей сборке, однако, когда я пробую его в другой сборке, я получаю эту ошибку:

System.IO.IOException : Write fault on path

Я не уверен в проблеме, так как на обеих сборках установлены одинаковые библиотеки

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