Внесение неисправности для приложений.NET?

Я задаюсь вопросом, знает ли кто-либо об инструментах или методах для автоматического введения общих отказов в под управлением программу.NET. Материал как...

  • Случайным образом введите OutOfMemoryException после выделения
  • Случайным образом введите FileNotFoundException после попытки получить доступ к файлам
  • Случайным образом введите IO или Сетевые исключения после использования сокета.

Таким образом, я действительно ищу способ прервать некоторые определенные вызовы в CLR, подобном тому, что AppVerifier делает для собственного кода Win32. Цель к тестовым приложениям под большим количеством состояний ошибки вне управления разработчиков и удостоверяться, что такие условия обрабатываются.

15
задан noctonura 11 February 2010 в 00:46
поделиться

4 ответа

Существует проект codeplex под названием TestAPI , который может выполнять внедрение ошибок во время выполнения. Вам нужно взглянуть на его API внедрения ошибок управляемого кода . Он использует API профилирования среды CLR для перехвата вызовов методов во время выполнения и изменения их поведения.

Взгляните на пример , чтобы узнать, как внедрить исключение при вызове метода в уже скомпилированном exe.

8
ответ дан 1 December 2019 в 04:34
поделиться

Это не совсем соответствует тому, о чем вы спрашиваете, но это связано и может быть полезно для достижения той же цели - улучшения обработки исключений в вашем приложении.

Redgate Exception Hunter http://www.red-gate.com/products/Exception_Hunter/index.htm

Я не использовал этот конкретный продукт, но другие продукты Redgate Я ' я использовал были великолепны.

1
ответ дан 1 December 2019 в 04:34
поделиться

Изолятор Typemock кажется вашим лучшим выбором.

Вот что вы можете сделать, если хотите вызвать исключение FileNotFoundException для имитации тестирования.

В производственном коде у вас есть такой метод

public static Project OpenProject(string filePath)

А в тестовом коде вы можете подделать вызов OpenProject следующим образом

Isolate.WhenCalled(()=>Project.OpenProject(nulll)).WillThrow(new FileNotFoundException());

И когда ваш код попадет в OpenProject , будет выброшено исключение FileNotFoundException .

5
ответ дан 1 December 2019 в 04:34
поделиться

Если вы готовы инвестировать некоторое время и деньги, эта книга хороша (так же как и Майк Коулишоу , но я думаю, что она вышла из печати и так может быть дорого или медленно получить). Если вы не можете вложить время и/или деньги, это учебное пособие быстро и быстро, и дает вам хорошие ссылки на другие ресурсы.

-121--3338966-

Дженерики имеют так называемый тип стирания - Список < Клиент > и Список < Заявитель > одного типа, компилятор просто накладывает ограничения по времени компиляции на то, что с ними можно сделать.

На основе этого можно проверить тип первого объекта в списке и вызвать внутренний метод (с другим именем).

-121--2435853-

Я не знаю, как можно было бы "случайным образом" ввести эти вещи, но я бы рекомендовал вам издеваться над частью, которая обычно не находится под вашим контролем, и чтобы макет бросил исключение в некоторых ваших тестах.

0
ответ дан 1 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: