простая (не единичная) среда тестирования, аналогичная .phpt, должна оценивать выходные данные / заголовки / ошибки / результаты - PullRequest
0 голосов
/ 04 октября 2010

Я ищу более простой тестовый фреймворк.Я взглянул на несколько скриптов PHPUnit и SimpleTest и нашел ужасный синтаксический сахар.SnapTest звучал красиво, но было так же громоздко.Apache More :: Тест был слишком процедурным, даже на мой вкус.И Symfony Lime-Test был уникальным в этом отношении.Инструменты BDD, такие как http://everzet.com/Behat/#basics, очень хороши, но даже на два уровня абстракции выше, чем хотелось бы.

Более того, я до сих пор использую одноразовые тестовые сценарии.И мне интересно, если вместо того, чтобы выбрасывать их, есть тестовый фреймворк / инструмент, который упрощает их использование для автоматизированных тестов.В частности, я хотел бы использовать что-то, что:

  • оценивает вывод (печать / эхо) или даже возвращает значения / объекты
  • сериализует и сохраняет его как данные зонда / сравнения
  • позволяет классифицировать этот результат сравнения как пройденный тест или сбой
  • также собирает заголовки, предупреждения или сообщения об ошибках (которые также могут быть ожидаемыми)
  • в дополнение к нескольким $Состояния test-> assert () или test :: fail ()

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

Старые сценарии .phpt с их выводом --expect-- близки, но все еще требуют слишком многоручная настройка.Также я бы предпочел веб-интерфейс для запуска тестов.Есть ли современная версия таких тестовых сценариев?(плюс некоторая оценка заголовка / ошибки / результата и, в конечном итоге, методы юнит-теста :: assert)


Правка, я приведу пример.Это ваш типичный тест PHPUnit:

 class Test_Something extends PHPUnit_Test_Case_Or_Whatever {
     function tearUp() {
         app::__construct(...);
     }
     function testMyFunctionForProperResults() {
         $this->assertFalse(my_func(false));
         $this->assertMatch(my_func("xyzABC"), "/Z.+c/");
         $this->assertTrue(my_func(123) == 321);
     }
 }

Вместо этого я хотел бы использовать простой PHP с менее смешанным API-интерфейсом для тестирования:

 function test_my_function_for_proper_results() {
     assert::false(my_func(false));
     print my_func("xyz_ABC");
     return my_func(123);
 }

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

Ответы [ 2 ]

1 голос
/ 20 ноября 2010

Для справки, я сейчас обнаружил Shinpuru .
http://arkanis.de/projects/shinpuru/
Это выглядит многообещающе для реальных тестовых случаев и использует анонимные функции в стиле PHP5.3 вместо оболочек класса самоанализа.

0 голосов
/ 11 октября 2010

Должен сказать - не очевидно, как ваш пример упрощенного контрольного примера можно было бы реализовать. К сожалению, запутанность - это более или менее то, с чем нужно жить. Тем не менее, я видел случаи, когда PHPUnit расширялся, чтобы упростить вещи, а также добавлять бегунов веб-тестов, тесты для заголовков, вывод и т.д. Это может быть вашим лучшим выбором. Например:

  • оценивает вывод (печать / эхо) :
    • включить буферизацию вывода и подтвердить результат буфера
  • сбор заголовков, предупреждений или сообщений об ошибках
    • зарегистрируйте свой собственный обработчик, который хранит сообщение об ошибке
    • wget против URL и сравнить результат (заголовки и все)

1025 * Etc. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...