Атрибут для пропуска оператора в модульном тесте c # - PullRequest
1 голос
/ 21 апреля 2010

Я хочу пропустить определенное утверждение в моих модульных тестах, например:

if (MessageBox.Show("Are you sure you want to remove " + contact.CompanyName + " from the contacts?", "Confirm Delete", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.Yes) == MessageBoxResult.Yes)

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

Ответы [ 3 ]

4 голосов
/ 21 апреля 2010

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

public MyClass(IMessageBoxDisplayService messageBoxDisplayService)
{ 
    ...
    if (messageBoxDisplayService.Show(message)) ...
3 голосов
/ 21 апреля 2010

Вы также можете попробовать использовать Молей , чтобы отключить вызов MessageBox.Show ().

0 голосов
/ 22 апреля 2010

Возможно, вы думаете о атрибуте [Conditional ()]:

http://msdn.microsoft.com/en-us/library/aa664622%28VS.71%29.aspx

Думаю, вам лучше использовать интерфейсное решение Марка.

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