Я задаюсь вопросом, знает ли кто-либо об инструментах или методах для автоматического введения общих отказов в под управлением программу.NET. Материал как...
Таким образом, я действительно ищу способ прервать некоторые определенные вызовы в CLR, подобном тому, что AppVerifier делает для собственного кода Win32. Цель к тестовым приложениям под большим количеством состояний ошибки вне управления разработчиков и удостоверяться, что такие условия обрабатываются.
Существует проект codeplex под названием TestAPI , который может выполнять внедрение ошибок во время выполнения. Вам нужно взглянуть на его API внедрения ошибок управляемого кода . Он использует API профилирования среды CLR для перехвата вызовов методов во время выполнения и изменения их поведения.
Взгляните на пример , чтобы узнать, как внедрить исключение при вызове метода в уже скомпилированном exe.
Это не совсем соответствует тому, о чем вы спрашиваете, но это связано и может быть полезно для достижения той же цели - улучшения обработки исключений в вашем приложении.
Redgate Exception Hunter http://www.red-gate.com/products/Exception_Hunter/index.htm
Я не использовал этот конкретный продукт, но другие продукты Redgate Я ' я использовал были великолепны.
Изолятор Typemock кажется вашим лучшим выбором.
Вот что вы можете сделать, если хотите вызвать исключение FileNotFoundException
для имитации тестирования.
В производственном коде у вас есть такой метод
public static Project OpenProject(string filePath)
А в тестовом коде вы можете подделать вызов OpenProject
следующим образом
Isolate.WhenCalled(()=>Project.OpenProject(nulll)).WillThrow(new FileNotFoundException());
И когда ваш код попадет в OpenProject
, будет выброшено исключение FileNotFoundException
.
Если вы готовы инвестировать некоторое время и деньги, эта книга хороша (так же как и Майк Коулишоу , но я думаю, что она вышла из печати и так может быть дорого или медленно получить). Если вы не можете вложить время и/или деньги, это учебное пособие быстро и быстро, и дает вам хорошие ссылки на другие ресурсы.
-121--3338966- Дженерики имеют так называемый тип стирания - Список < Клиент >
и Список < Заявитель >
одного типа, компилятор просто накладывает ограничения по времени компиляции на то, что с ними можно сделать.
На основе этого можно проверить тип первого объекта в списке и вызвать внутренний метод (с другим именем).
-121--2435853-Я не знаю, как можно было бы "случайным образом" ввести эти вещи, но я бы рекомендовал вам издеваться над частью, которая обычно не находится под вашим контролем, и чтобы макет бросил исключение в некоторых ваших тестах.