Подтвердить что ты не робот

Как я могу заставить phpunit запускать тесты из всех файлов в папке?

Из того, что я прочитал, похоже, что я должен установить папку, например. тесты /, поместите несколько файлов в него с помощью классов unit test, а затем запустите phpunit в этом файле и найдите и запустите тесты.

По какой-то причине, в моей установке (в OS X), он считает, что файл папок/является файлом, или так выглядит:

$ ls tests
test1.php test2.php
$ phpunit tests/test1.php
PHPUnit 3.5.3 by Sebastian Bergmann.

F

Time: 0 seconds, Memory: 5.00Mb

There was 1 failure:

1) FailingTest::testFail
Your test successfully failed!

/Users/****/tmp/tests/test1.php:4

FAILURES!
Tests: 1, Assertions: 0, Failures: 1.
$ phpunit tests/test2.php
PHPUnit 3.5.3 by Sebastian Bergmann.

.

Time: 0 seconds, Memory: 5.00Mb

OK (1 test, 1 assertion)
$ phpunit tests
PHP Fatal error:  Uncaught exception 'PHPUnit_Framework_Exception' with message 'Neither "tests.php" nor "tests.php" could be opened.' in /usr/local/PEAR/PHPUnit/Util/Skeleton/Test.php:102
Stack trace:
#0 /usr/local/PEAR/PHPUnit/TextUI/Command.php(157): PHPUnit_Util_Skeleton_Test->__construct('tests', '')
#1 /usr/local/PEAR/PHPUnit/TextUI/Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
#2 /usr/local/bin/phpunit(53): PHPUnit_TextUI_Command::main()
#3 {main}
  thrown in /usr/local/PEAR/PHPUnit/Util/Skeleton/Test.php on line 102

Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Neither "tests.php" nor "tests.php" could be opened.' in /usr/local/PEAR/PHPUnit/Util/Skeleton/Test.php:102
Stack trace:
#0 /usr/local/PEAR/PHPUnit/TextUI/Command.php(157): PHPUnit_Util_Skeleton_Test->__construct('tests', '')
#1 /usr/local/PEAR/PHPUnit/TextUI/Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
#2 /usr/local/bin/phpunit(53): PHPUnit_TextUI_Command::main()
#3 {main}
  thrown in /usr/local/PEAR/PHPUnit/Util/Skeleton/Test.php on line 102

У меня есть, на мой взгляд, довольно стандартная установка phpunit через PEAR, следуя этим инструкциям http://www.newmediacampaigns.com/page/install-pear-phpunit-xdebug-on-macosx-snow-leopard, на OS X Snow Leopard.

$ pear version
PEAR Version: 1.9.1
PHP Version: 5.3.2
Zend Engine Version: 2.3.0
Running on: **** 10.4.0 Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386 i386
$ phpunit --version
PHPUnit 3.5.3 by Sebastian Bergmann.

Я надеюсь, что кто-то другой там столкнулся с этой проблемой, и это просто простое исправление, иначе я просто делаю что-то неправильно?

4b9b3361

Ответ 1

Это не ошибка, это особенность.

У вас есть каталог, полный файлов .php, в вашем случае все они содержат тестовые файлы.

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

Это очень распространенный сценарий.

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

Вы можете изменить это поведение, если хотите, - создав файл с именем phpunit.xml в своем каталоге тестов со следующим содержимым

<?xml version="1.0" encoding="utf-8" ?>
<phpunit>
<testsuite name='Name your suite'>
    <directory suffix='.php'>./</directory>
</testsuite>
</phpunit>

Как только вы это сделаете, PHPUnit запустит все файлы с '.php' в конце имени файла (в этом контексте расширение файла считается частью имени файла)

Но лучше всего привыкнуть к соглашению и соответственно назвать свои тесты.

Ответ 2

Раздражающая маленькая причуда, но я понял это.

Как минимум, с конфигурацией по умолчанию тестовые файлы должны заканчиваться на "Test.php", например. fooTest.php, или они не найдены тестовым бегуном.

Ответ 3

Более простой способ запуска теста в папке - добавить "Test.php" в конце всех ваших тестов и запустить phpunit, определяя вашу папку следующим образом

phpunit .

или

phpunit your_test_folder/.