Имитация собственного / неуправляемого исключения в C # - PullRequest
1 голос
/ 11 ноября 2019

Для целей модульного тестирования я хотел бы создать исключение CRT в C #, чтобы мы могли проверить, что происходит.

Я могу написать DLL на c ++ и испортитьстек и т.д., но мне интересно, есть ли хороший способ сделать это в C #. Я думал о неправильном вызове Windows DLL и т. Д.

Есть ли способ надежно сгенерировать подобное исключение в Windows 10 в C #?

1 Ответ

1 голос
/ 11 ноября 2019

Это краткое изложение моих комментариев выше


Да, это возможно. Если вы хотите иметь более стабильную среду тестирования, вы можете создать суррогатную версию .NET (которая вызывается вашими тестами), которая ничего не делает, кроме как вызывает хитроумные библиотеки DLL. Таким образом, если процесс поврежден, он вытеснит только суррогат, а не ваш процесс тестирования.

Вы можете отслеживать, существует ли процесс (изящно или нет), используя Process. Если он записывает в файл, вы знаете, что все в порядке, если нет, вы можете предположить ошибку. Вы также можете использовать MS UI Automation для автоматического щелчка по любым кнопкам OK диалоговых окон ошибок времени выполнения.

Чистый результат - стабильная среда тестирования, в которой не нуждается человек.


  Process 1      |  Process 2   
  Unit tests --> |  Surrogate exe  -->  Native DLL
  C#.NET         | .NET                c/c++

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...