Я пытаюсь написать тест 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
Я не уверен в проблеме, так как на обеих сборках установлены одинаковые библиотеки