Итак, прежде всего вам нужно сгенерировать Shim для класса процесса.
После создания подделок для системы вы должны увидеть папку под названием «Fakes». Внутри этой папку вам необходимо отредактировать файл System.fakes так, что он будет генерировать прокладки для System.Diagnostics.Process:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
<Assembly Name="System" Version="4.0.0.0"/>
<ShimGeneration>
<Add FullName="System.Diagnostics.Process"/>
</ShimGeneration>
</Fakes>
После компиляции вы сможете увидеть в обозревателе объектов, которые Подделка Проставки для процесса есть были genereated.
Чтобы использовать Shim в тесте, вам необходимо настроить делегат Fake Process.Start. Тест может в конечном итоге что-то вроде этого:
using (ShimsContext.Create())
{
System.Diagnostics.Fakes.ShimProcess.StartString = s =>
{
Console.WriteLine(s);
return new StubProcess();
};
// A call to your method under test that exectues Process.Start rather than calling it directly
var process = Process.Start("SomeString");
Assert.IsTrue(process is StubProcess);
}
Очевидно, что вы можете включить что-то более уместную для теста сценария в вашем делегатом и утверждений.
См. MSDN link
Извините, не получите ваш ответ. Подделки для модульного тестирования, поэтому я не вижу, как я могу издеваться над процессом Process.Start, используя вашу рекомендацию. –
Может быть, для тестирования вы попробуете обернуть Process.Start при помощи метода? – progpow
Я думаю, вы поняли мой вопрос неправильно. Я хотел бы использовать Faces Assembly Framework от Microsoft для этого задания, и у меня есть проблема с его использованием для метода Process.Start. Конечно, есть другие способы издеваться над этой функциональностью. –