2016-09-21 5 views
0

У меня есть многочисленные модульные тесты в моем решении. Я использую NUnit и имею много Asserts повсюду, например. Assert.AreEqual (5, someVar).Существует ли C# framework/плагин или шаблон, позволяющий динамически устанавливать ожидаемые значения в тестах?

Такой тип проверки ожидаемых чисел по сравнению с фактическими числами повторяется много.

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

Мой вопрос в том, существует ли плагин или шаблон, чтобы все ожидаемые числа в Asserts могли автоматически обновляться с фактическими значениями, когда я их требую?

+1

Посмотрите на использование [TestCaseData] (https://github.com/nunit/docs/wiki/TestCaseData), чтобы комбинировать входные данные и ожидаемый результат в одном месте. –

+0

Выглядит интересно - спасибо Patrick –

ответ

0

Я не уверен, что вы приближаетесь к этому правильно.

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

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

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

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

+0

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

0

Это звучит как Mocking

Вы можете установить его с NuGet пакетов в VS.

+0

Это не насмешка, так как я не могу высмеять результат. Мне нужно рассчитать выход, а затем изменить его. –

1

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

Например, говорят, что вы делаете ICalculator с .AddOne() и .TimesTwo() методы

Вы можете установить _startingNumber = 1
тесты для аддоне() Assert (_startingNumber + 1, результат)
Тесты для TimesTwo() Assert (_startingNumber * 2, result)

При изменении _startingNumber ваши подтверждения остаются верными.
Если вы утверждающая логику, а не значение, которые вы могли бы попробовать таблицу поиска

_lookup = new Dictionary<string, string>(); 
    _lookup.Add("SaveStatus", "SaveValue"); 
    _lookup.Add("DeletedStatus", "DeletedValue"); 

Тогда ваше утверждение выглядит как Assert (_lookup [ «SaveStatus»], результат)

Так что, если сегодня вы ожидаете «SaveValue», но завтра вы ожидаете «SaveValueNew», вы можете изменить его в поиске, но все утверждения, ожидающие сохранения, будут правильными.