Najlepszy sposób na jednostkowe testowanie konsoli c # app
Mam prostą aplikację na konsolę. Jest uruchamiany z normalnym głównym i całym programem. UżywaBiblioteka parserów wiersza poleceń. Następnie mam drugi projekt w rozwiązaniu zawierający testy jednostkowe dla aplikacji. Ale nie wydaje mi się, aby znalazłem dobry sposób na uruchomienie procesów programu głównego z testów. Mój aktualny kod do rozpoczęcia procesu wygląda mniej więcej tak.
...
process = new Process();
process.StartInfo.FileName = "FooBar";
process.StartInfo.Arguments = arguments;
// use it to start from testing environment
process.StartInfo.UseShellExecute = false;
// redirect outputs to have it in testing console
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
...
Próbowałem ustawienia
process.StartInfo.WorkingDirectory
do
AppDomain.CurrentDomain.BaseDirectory
i
Environment.CurrentDirectory;
Ale czy muszę określić całą ścieżkę względną dla wykonywalnych aplikacji konsoli, czy też istnieje wyrafinowany sposób uruchamiania procesów „przetestowanej” aplikacji? Najpierw miałem moje testy jako klasę w programie „głównym”, a potem zadziałało dobrze. Problemy zaczęły się, gdy przeniosłem testy do własnego projektu. Dlatego podejrzewam, że jest to ścieżka lub coś w tym rodzaju.
Próbowałem także Running Program.Main, ale to po prostu źle się czuje :)