Поблочное тестирование средств доступа - необходимость?

=ARRAYFORMULA(IF(A2:A;
 MMULT(TRANSPOSE((ROW(INDIRECT("B2:B"&COUNTA(A1:A)))<=
       TRANSPOSE( ROW(INDIRECT("B2:B"&COUNTA(A1:A)))))*
      {B2; TRANSPOSE(SPLIT(REPT(J5*-1&"♦"; COUNTA(A3:A)); "♦"))}); 
 SIGN({B2; TRANSPOSE(SPLIT(REPT(J5*-1&"♦"; COUNTA(A3:A)); "♦"))})^2); IFERROR(1/0)))

0

11
задан Yarik 27 February 2009 в 16:16
поделиться

11 ответов

Абсолютно. Идея модульных тестов состоит в том, чтобы гарантировать, чтобы изменения не влияли на поведение неизвестными способами. Вы могли бы сэкономить некоторое время пишущий тест для getFoo(). Если Вы изменяете тип Foo чтобы быть чем-то немного более сложным затем, Вы могли легко забыть тестировать средство доступа. Если Вы подвергаете сомнению, необходимо ли записать тест или нет, Вы - более обеспеченная запись его.

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

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

7
ответ дан 3 December 2019 в 01:39
поделиться

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

16
ответ дан 3 December 2019 в 01:39
поделиться

Мои критерии тестирования то, что каждая часть кода, содержащего условную логику (в то время как, если, поскольку, и т.д.) быть протестированными. Если бы средства доступа являются простыми методами считывания/методами set, я сказал бы, что тестирование их тратит впустую Ваше время.

3
ответ дан 3 December 2019 в 01:39
поделиться

Вы не имеете к тесту записи на свойства, которые не содержат логики.

Единственное объяснение для тестирования простых свойств должно повысить тестовое покрытие - но это просто глупо.

3
ответ дан 3 December 2019 в 01:39
поделиться

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

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

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

2
ответ дан 3 December 2019 в 01:39
поделиться

Если Ваш IDE генерирует и справляется с модификациями для членских средств доступа---Вы, привычка' делает что-либо, что специальный---, затем тестирующий их действительно, не важен; типы совпадут, именование будет шаблоном и т.д.

1
ответ дан 3 December 2019 в 01:39
поделиться

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

С другой стороны, тестирование средства доступа берет меньше ввода это, задавая этот вопрос :)

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

1
ответ дан 3 December 2019 в 01:39
поделиться

Никакой-friggin путь! Пустая трата времени!

Даже Bob Martin See ТАК подкаст 41, дедушка Гибких говорит "нет".

2
ответ дан 3 December 2019 в 01:39
поделиться

Обычно, когда я рассматриваю модульные тесты записи, я спрашиваю меня следующее:

  1. Метод считывания/метод set получает доступ к чему-нибудь на DAL (Уровень доступа к данным)?

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

  1. Действительно ли это обозримо, что метод считывания/метод set выдаст исключение?

Лучшая практика для методов считывания не должна позволять им выдавать исключения вообще. Метод set является другим вопросом. Однако так или иначе, если Вы решаете, что свойство могло бы возможно выдать исключение, затем запишите модульный тест на то свойство, и для успешного доступа, и для того, чтобы целеустремленно генерировать исключение.

Кроме этого я не обеспокоился бы, как Dan указал, "В какой-то момент, необходимо положить, что компилятор собирается генерировать правильную программу для Вас".

1
ответ дан 3 December 2019 в 01:39
поделиться

Наша компания имеет и виды людей и мнения. Я склоняюсь к не тестированию их а именно, как они обычно

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

Существуют исключения хотя:

  • Когда они просто не сгенерированы 'методы считывания' и 'методы set'
  • Когда они - часть важного API, это только что предусмотрело других пользователей и не действительно протестировало в контексте, в котором Вы в настоящее время находитесь

Оба этих случая могли бы заставить меня тестировать их. Первое еще одно, чем второе.

2
ответ дан 3 December 2019 в 01:39
поделиться

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

Даже если данное средство доступа ничего не делает кроме возврата поле, это могло бы быть изменено позже, чтобы сделать что-то дополнительное.

Кроме того, это - простой способ к количеству запущенных тестов, который многие менеджеры как.

0
ответ дан 3 December 2019 в 01:39
поделиться
Другие вопросы по тегам:

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