должны ли тесты PHPUnit находиться в каталоге "/ test"? - PullRequest
5 голосов
/ 22 сентября 2011

при использовании PHPUnit обязательно ли, чтобы тесты находились внутри каталога / tests? Как PHPUnit узнает, что тест - это «тест»? Он анализирует файл и ищет имена методов или использует какое-то соглашение об именах файлов?

Ответы [ 3 ]

6 голосов
/ 22 сентября 2011

требуется, чтобы тесты находились внутри каталога / tests?

номер

Как PHPUnit узнает, что тест - это "тест"?

Посредством отражения (и пользователем, указывающим каталог для просмотра).

4 голосов
/ 22 сентября 2011

Он анализирует файл и ищет имена методов или использует какое-то соглашение об именах файлов?

Короче говоря:

Имя файла должно заканчиваться Test.php, класс должен расширятьсяс PHPUnit_Framework_TestCase (некоторые точки вниз по дереву наследования).

Хорошей практикой является отделение кода тестирования от производственного кода.Обычно это отражает структуру папок.Но ничто не мешает вам делать это иначе.Просто учтите, что для вашего производственного кода проще генерировать статистику (метрики).

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

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

2 голосов
/ 22 сентября 2011

Соглашение заключается в присвоении имен тестовым классам и файлам путем добавления Test к классам, которые вы тестируете. Например, My_Cool_User в My/Cool/User.php будет проверено с My_Cool_UserTest в My/Cool/UserTest.php.

Я предпочитаю разделять тесты в отдельном каталоге, но это не обязательно. Используя соглашение об именах, вы можете указать PHPUnit, как найти все тесты, смешанные с вашим обычным кодом. По умолчанию PHPUnit следует вышеописанному, поэтому, если вы укажете его на папку с именем myproject, он будет искать в нем все файлы, заканчивающиеся на Test.php.

...