Начало работы с поблочным тестированием

Я хотел бы добавить к ответу AndreyT (если кто-то наткнулся на эту страницу, ища дополнительную информацию по этой теме):

Когда я начинаю больше играть с этими объявлениями, я понимаю, что есть основной гандикап, связанный с ними в C (по-видимому, не в C ++). Достаточно распространено иметь ситуацию, когда вы хотели бы предоставить вызывающему абоненту const указатель на буфер, в который вы вложили. К сожалению, это невозможно при объявлении такого указателя на C. Другими словами, стандарт C (6.7.3 - параграф 8) не согласуется с чем-то вроде этого:


   int array[9];

   const int (* p2)[9] = &array;  /* Not legal unless array is const as well */

Это ограничение похоже, не присутствует в C ++, что делает эти типы объявлений более полезными. Но в случае C необходимо вернуться к регулярному объявлению указателя всякий раз, когда вам нужен указатель const на буфер фиксированного размера (если только сам буфер не был объявлен как const). Вы можете найти больше информации в этой почтовой цепочке: текст ссылки

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

24
задан Community 23 May 2017 в 11:53
поделиться

7 ответов

Хорошо вот некоторые лучшие практики от кого-то, кто не делает модульного теста так, как он должен... кашлять.

  1. Удостоверяются Ваш тестовый тест один вещь и одна вещь только.
  2. модульные тесты Записи, когда Вы идете. Предпочтительно прежде Вы пишете код, против которого Вы тестируете.
  3. не Делают модульного теста GUI.
  4. Отделяются, Ваши проблемы .
  5. Минимизируют зависимости Ваших тестов.
  6. Насмешка behviour с насмешки .
22
ответ дан Michael Easter 28 November 2019 в 23:32
поделиться

Вы могли бы хотеть посмотреть TDD на Трех Учетных карточках и Три Учетных карточки для легкого Запоминания Сущности Разработки через тестирование :

Карта № 1. Дядя Bob’s Три Закона

  • Запись никакой производственный код кроме пройти провальный тест.
  • Только для записи действительно тест для демонстрации отказа.
  • производственный код Достаточно только для записи, чтобы пройти тест.

Карта № 2: ПЕРВЫЕ Принципы

  • Быстро: отупляющим образом быстро, как в сотнях или тысячах в секунду.
  • Изолированный: тест изолирует отказ ясно.
  • Повторяемый: Я могу неоднократно выполнять его, и это передаст или приведет тот же путь к сбою каждый раз.
  • Самопроверка: Тест является однозначно сбоем передачи.
  • Своевременный: Произведенный в жестко регламентированном с крошечными изменениями кода.

Карта № 3: Ядро Красного TDD

  • : протестируйте сбои
  • Green: протестируйте передачи
  • , Осуществите рефакторинг: уберите код и тесты
14
ответ дан Jon Limjap 28 November 2019 в 23:32
поделиться

Так называемое платформа xUnit широко используется. Это было первоначально разработано для Smalltalk как SUnit, развилось в JUnit для Java, и теперь имеет много других реализаций, таких как NUnit для.Net. Это - почти фактический стандарт - если Вы скажете использование модульных тестов то большинство других разработчиков предположит, что Вы имеете в виду xUnit или подобный.

3
ответ дан Greg Hewgill 28 November 2019 в 23:32
поделиться

Большой ресурс для 'лучших практик' Google Testing Blog , например, недавнее сообщение на , Пишущий Тестируемый Код является фантастическим ресурсом. Конкретно еженедельные сообщения серии их 'Testing on the Toilet' являются большими для регистрации вокруг Вашего куба или туалета, таким образом, можно всегда думать о тестировании.

3
ответ дан Craig 28 November 2019 в 23:32
поделиться

NUnit является хорошим инструментом для любого из языков.NET.

Модульные тесты могут использоваться различными способами:

  1. Тестовая Логика
  2. разделение Увеличения элементов кода. Если Вы не можете полностью протестировать функцию или раздел кода, то части, которые составляют его, являются также межиждивенцем.
  3. разработка Диска, некоторые люди тесты записи прежде они пишут код, который будет протестирован. Это вынуждает Вас думать о том, что Вы хотите код к , делают , и затем дает Вам определенную инструкцию по тому, когда Вы достигли этого.
0
ответ дан Tilendor 28 November 2019 в 23:32
поделиться

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

0
ответ дан Thomas Eyde 28 November 2019 в 23:32
поделиться

xUnit семья является оплотом поблочного тестирования. Они интегрируются в подобных Netbeans, Eclipse и многим другим IDE. Они предлагают простое, структурированное решение поблочного тестирования.

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

1
ответ дан Steve 28 November 2019 в 23:32
поделиться
Другие вопросы по тегам:

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