Поблочное тестирование - Является этим невоспитанность, чтобы иметь модульный тест, называя другие модульные тесты

Передайте поиск второй функции VLOOKUP с функцией IFERROR , если первый сбой.

В I5 as,

=IFERROR(VLOOKUP(G5, A:E, 5, FALSE), VLOOKUP(G5, C:E, 3, FALSE))

Заполнить при необходимости.

24
задан Vaccano 2 September 2009 в 16:51
поделиться

6 ответов

Измените настройку на другой метод и вызовите этот метод из обоих тестов. Тесты не должны вызывать другие тесты.

53
ответ дан tvanfosson 16 October 2019 в 07:42
поделиться

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

6
ответ дан Rob Allen 16 October 2019 в 07:42
поделиться

Модульный тест должен проверять одну единицу / функцию вашего кода по определению. Если он вызывает другие модульные тесты, он тестирует более одного модуля. Я разбиваю его на отдельные тесты.

4
ответ дан Vince 16 October 2019 в 07:42
поделиться

Да - модульные тесты должны быть отдельными и иметь целью проверить только одну вещь (или, по крайней мере, небольшое количество тесно связанных вещей). Кроме того, вызовы data.Expect и phone.Expect в вашем методе тестирования создают ожидания, а не вызовы-заглушки, которые могут сделать ваши тесты хрупкими, если вы выполните рефакторинг ...

2
ответ дан Lee 16 October 2019 в 07:42
поделиться

IMHO, вы должны сделать одно из следующего:

  • Создайте метод, который возвращает действительный вызов, и используйте его отдельно для обоих тестов (не один вызывает другой)
  • Mock действительный вызов ShowCallMessageTest
11
ответ дан 28 November 2019 в 17:52
поделиться

В качестве контраргумента:

Я твердо верю, что хорошо спроектированные модульные тесты должны зависеть друг от друга!

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

Мы реализовали эту идею в расширении JExample для JUnit . Пока нет порта C #, хотя есть порты для Ruby и Smalltalk и ... самая последняя версия PHPUnit унаследовала обе наши идеи: зависимости и повторное использование фикстур .

PS: люди также используют его для Groovy .

6
ответ дан 28 November 2019 в 17:52
поделиться
Другие вопросы по тегам:

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