Тестирование HeaderDoc

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

Получение HeaderDoc Tarball

Начинаясь в HeaderDoc 8.8, набор тестов установлен как часть установки HeaderDoc. Таким образом можно выполнить набор тестов, не загружая источник tarball. Однако главная причина выполнить его состоит в том при изменении исходного кода когда намного проще работать с автономной копией HeaderDoc.

Можно загрузить HeaderDoc tarball с www.opensource.apple.com. Щелкните по последней версии OS X на той странице, затем ищите headerdoc на получающейся странице и щелчке ссылка на загрузку вправо.

Запущение тестов

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

Обработка тестовых отказов

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

  1. Используйте update подкоманда, как будто Вы пытались обновить результаты испытаний (headerDoc2HTML.pl -T update [дополнительный список тестов]). Когда тест перестал работать, HeaderDoc выводит на экран различия в результате испытаний.

  2. Ввести less и нажмите возврат для получения контекстной разности некоторых более многословных разделов результата.

  3. Если Вы видите, что изменение ожидается (если Вы внесли изменение в код, и новые результаты отражают желаемое изменение), ввести confirm обновить результаты испытаний с новыми данными.

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

Создание теста

Создание теста несколько более включается, чем выполнение того. Для создания теста у Вас должны быть проблематичный блок комментария HeaderDoc и объявление. После того, как Вы имеете их, выполняете следующие шаги:

  1. Создайте минимальный заголовок тестового сценария или сценарий, содержащий только объявление, вызывающее проблему (и класс, окружающий его, если применимо).

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

  3. Исправьте ошибки в HeaderDoc так, чтобы код был проанализирован правильно.

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

  5. Ввести headerDoc2HTML.pl -T create создать новый тест.

  6. Выберите уникальное имя для теста. Имя для теста должно быть уникальным после пробелов, и специальные символы заменяются подчеркиваниями. Для списка существующих тестов посмотрите в подкаталогах в testsuite каталог.

    В целом имена тестов на языках кроме C или C++ должны начаться с имени языка программирования.

  7. Выберите язык программирования для теста. (Это должно соответствовать объявление.)

  8. Если Вы создаете тест языка C, выбираете, создаете ли Вы тест препроцессора C или тест синтаксического анализатора.

    Тесты синтаксического анализатора предназначаются для тестирования обоих синтаксический анализатор кода и комментарий, обрабатывающий код. Большую часть времени необходимо писать тест синтаксического анализатора. Тесты синтаксического анализатора ограничиваются единственным объявлением на тест, однако, и таким образом неподходящие для определения, изменяет ли директива препроцессору C правильно объявление.

    C тесты препроцессора предназначаются, чтобы протестировать, изменяет ли макрос препроцессора C правильно объявление. В отличие от теста синтаксического анализатора, тест препроцессора C не тестирует комментарий, обрабатывающий код. Требуется два блока кода. Первый блок является серией макросов препроцессора C, которые все анализируются. Вторым является объявление для работы на. Это объявление анализируется, и информация о том объявлении хранится в результатах испытаний.

С этого момента шаги отличаются на основе типа теста, который Вы выбираете.

Создание теста синтаксического анализатора

Для создания теста синтаксического анализатора, после завершения шагов в Создании Теста, делают следующее:

  1. Вставьте блок комментария HeaderDoc, затем контроль-за-прессой-D на новой строке для окончания комментария.

  2. Вставьте код, затем контроль-за-прессой-D на новой строке для окончания объявления.

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

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

  5. Ожидайте HeaderDoc для создания данных тестирования.

  6. Представьте тестовый сценарий и патчи через bugreport.apple.com.

Создание теста препроцессора C

C тесты макроса препроцессора применяют серию макросов препроцессора C к объявлению (который может быть чем-либо от макроса препроцессора C до класса).

Для создания теста препроцессора C завершите шаги в Создании Теста, затем сделайте следующее:

  1. Вставьте блок макросов препроцессора C, затем контроль-за-прессой-D на новой строке для окончания списка макросов.

  2. Вставьте объявление, что макросы препроцессора C должны изменить, затем контроль-за-прессой-D на новой строке для окончания объявления.

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

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

  5. Ожидайте HeaderDoc для создания данных тестирования.

  6. Представьте тестовый сценарий и патчи через bugreport.apple.com.