Используйте директиву #IF для обнаружения юнит-теста - PullRequest
5 голосов
/ 25 ноября 2011

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

Можно ли проверить вызов из модульного теста, используя директиву #if?

#if TestMethod
...do this config
#else
...do this config
#endif

Может быть, как-нибудь обнаружить атрибут в функции модульного теста?

Ответы [ 2 ]

11 голосов
/ 25 ноября 2011

Нет, потому что либо код существует во встроенном двоичном файле, либо его нет. Решение принимается полностью во время компиляции, поэтому вы ничего не можете сделать во время выполнения, чтобы заново ввести «отсутствующий» код. Вам нужно будет динамически загрузить один из двух разных двоичных файлов и запустить тесты таким образом.

У вас есть для использования условной компиляции вместо решения, какой маршрут выбрать во время выполнения?

0 голосов
/ 25 ноября 2011

Вы не хотели бы обрабатывать контекст вызывающего из вашего кода; особенно если вы пытаетесь проверить логику внутри него. Однако если вы хотите выполнить некоторую функцию с разными параметрами (например) в зависимости от того, выполняете ли вы ее в приложении или в контексте тестирования, то вы можете либо использовать некоторый базовый тип или интерфейс в качестве параметра, либо пометить метод с помощью атрибут и проверьте атрибут с помощью отражения. Директивы должны использоваться для определения того, какой код должен быть скомпилирован, и вы должны использовать их только в том случае, если вы уверены, что это то, что вы намереваетесь.

...