Я нашел несколько условных обозначений для тестов на обслуживание в проекте и Я не уверен, какой подход подходит для нашего следующего проекта PHP. я пытаясь найти лучшее соглашение, чтобы способствовать доступность тестов при просмотре исходного кода. Я был бы очень заинтересованы в вашем опыте/мнении относительно каждого:
- Одна папка для продуктивного кода, другая для модульных тестов: это отделяет модульные тесты из логических файлов проекта. Это разделение опасения - такая же неприятность, как и преимущество: кто-то смотрит в исходный код проекта будет - я полагаю, - либо просмотрите реализации или модульных тестов (или чаще: реализация только). Преимущество модульных тестов - это еще одна точка зрения на ваши классы потеряно - эти две точки зрения находятся слишком далеко друг от друга.
- Аннотированные методы тестирования: любая современная модульная система тестирования, которую я знаю, позволяет разработчикам создавать специальные методы тестирования, аннотировать их (@test) и встраивая их в код проекта. Большой недостаток, который я вижу здесь, заключается в том, что файлы проекта становятся загроможденными. Даже если эти методы разделены используя заголовок комментария (например, UNIT TESTS ниже этой строки), он просто раздувается класс без необходимости.
- Проверить файлы в тех же папках, что и файлы реализации: Наш файл Соглашение об именах диктует, что файлы PHP, содержащие классы (один класс на файл) должен заканчиваться на .class.php. Я мог представить, что помещение тесты относительно файла класса в другой, заканчивающийся на .test.php, будут сделать тесты гораздо более интересными для других разработчиков, не испортив класс. Хотя он раздувает папки проекта, а не файлы реализации, это мой любимый до сих пор, но у меня есть сомнения: я подумали бы, что другие уже придумали это, и отбросили это по какой-то причине (т.е. я не видел Java-проект с файлами Foo.java и FooTest.java в той же папке.) Может быть, потому, что Разработчики java более активно используют среды IDE, которые позволяют им более легкий доступ к тесты, в то время как в PHP нет больших редакторов (например, eclipse for java) - многие разработчики, которых я знаю, используют vim/emacs или аналогичные редакторы с небольшим количеством поддержка разработки PHP как таковой.
Каков ваш опыт в любом из этих мест размещения unit test? У тебя есть другое соглашение, которое я здесь не перечислял? Или я просто переоцениваю unit test доступность рецензентам?