Я пытаюсь написать модульное тестирование на C # с помощью встроенного в VS 2008 фреймворка модульного тестирования, и метод, который я тестирую, вызывает Environment.Exit(0)
. Когда я вызываю этот метод в моем модульном тесте, мой модульный тест прерывается. Метод должен действительно вызывать Exit
, и я хочу проверить способ его выполнения, а также проверить код завершения, который он использует. Как я могу это сделать? Я посмотрел на Microsoft.VisualStudio.TestTools.UnitTesting Namespace , но не увидел ничего, что выглядело соответствующим.
[TestMethod]
[DeploymentItem("myprog.exe")]
public void MyProgTest()
{
// Want to ensure this Exit's with code 0:
MyProg_Accessor.myMethod();
}
А пока вот суть кода, который я хочу протестировать:
static void myMethod()
{
Environment.Exit(0);
}
Редактировать: вот решение, которое я использовал в своем методе тестирования, благодаря RichardOD :
Process proc;
try
{
proc = Process.Start(path, myArgs);
}
catch (System.ComponentModel.Win32Exception ex)
{
proc = null;
Assert.Fail(ex.Message);
}
Assert.IsNotNull(proc);
proc.WaitForExit(10000);
Assert.IsTrue(proc.HasExited);
Assert.AreEqual(code, proc.ExitCode);