2015-03-27 4 views
39

Проблема

Чтобы улучшить качество моего кода, я решил попробовать, чтобы узнать, как проверить свой код с помощью блока тестирования вместо моего посредственного-at лучших тестовых решений.PHPUnit - «Нет испытания выполняются» при использовании файла конфигурации

Я решил установить PHPUnit, используя композитор для личной библиотеки, что позволяет мне выполнять общие функции базы данных. Сначала у меня не было конфигурационный файл для PHPUnit и когда я побежал команды, как:

$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest 

Пожалуйста, обратите внимание, что это команда терминал, так что я не включал расширение .php. Вышеупомянутый GeneralStringFunctionsTest фактически является файлом GeneralStringFunctionsTest.php.

Выход что я ожидал:

Время: 31 мс, Память: 2.75MB

ОК (1 тест, 1 утверждение)

Затем я попытался использовать чтобы автоматически загружать тестовый пакет, а не каждый раз вручную вводить файл. Я создал файл с именем phpunit.xml в моем корневом каталоге, и вошел в следующее в файл: http://pastebin.com/0j0L4WBD:

<?xml version = "1.0" encoding="UTF-8" ?> 
<phpunit> 
    <testsuites> 
     <testsuite name="Tests"> 
      <directory>tests</directory> 
     </testsuite> 
    </testsuites> 
</phpunit> 

Теперь, когда я запускаю команду:

phpunit 

Я получаю следующий вывод:

PHPUnit 4.5.0 от Sebastian Bergmann и авторы.

Конфигурация читать из /Users/muyiwa/Projects/DatabaseHelper/phpunit.xml

Время: 16 мс, Память: 1.50MB

Нет тестов выполняются!

В случае, если это полезно, моя структура каталогов выглядит следующим образом:
ЦСИ - каталог верхнего уровня (со всем моим исходным кодом)
тесты - каталог верхнего уровня (все мои тесты, структурирована так же, как мой ЦСИ папки)
поставщика - Composer сторонних файлов

у меня также есть композитор и JSON-файл блокировки, а также файл PHPUnit XML в верхнем уровне файлов.

Вещей я Пробовал

  • Изменения каталога в phpunit.xml к tests/GeneralStringFunctions
  • Изменения каталога в phpunit.xml для ./tests
  • Перемещения phpunit.xml файла в каталог tests, а затем изменить каталог, чтобы быть ./ вместо tests.
  • Добавление атрибута суффикса в тег каталога в phpunit.xml, чтобы указать «Тесты» как явный суффикс.
+0

ли 'тестов/GeneralStringFunctions/GeneralStringFunctionsTest' папке или имени файла? – hek2mgl

+0

@ hek2mgl Это имя файла, на самом деле оно называется 'GeneralStringFunctionsTest.php'. В интерфейсе командной строки я не вводил расширение '.php', потому что он работал без него. –

+1

ОК, тогда ваша конфигурация должна работать. Кстати, если вы укажете суффикс, в вашем случае это будет 'Test.php', а не' Test', но, тем не менее, вы можете опустить это, поскольку значение 'Test.php' является значением по умолчанию. – hek2mgl

ответ

77

для чего это стоит (опоздание), я столкнулся с этим в последнее время, когда я был создание нового L aravel 5.1 для простого веб-сайта.Я пытался отладить ее и был смущен, когда я пытался:

php artisan make:test homeTest 

(который имеет тест по умолчанию, который просто утверждает, верно, то верно)

и увидел выход

No tests executed! 

Что проблема в конечном итоге для меня было связано с моей установкой PHP - «phpunit» был зарегистрирован и настроен по-разному, а phpunit, который поставлялся с установкой Laravel, был настроен правильно и отлично работал.

Таким образом, исправление работает сконфигурированный PHPUnit поставщика (от той же корневой директории, как приложение/и тесты /):

./vendor/bin/phpunit 

Надежда, что помогает кому-то еще!

+1

Я думаю, что это, скорее всего, правильный ответ. С тех пор я удалил проект, поэтому у меня нет возможности дважды проверять, но для будущих проектов с композитором я всегда использовал 'vendor/bin/phpunit' вместо глобального двоичного' phpunit'. Я даже удалил глобальную двоичную 'phpunit', поэтому я не случайно повторю ту же ошибку, и с тех пор она не появилась. Я отмечу это как принятый ответ, поскольку это, скорее всего, причина. –

+0

вызов './Vendor/bin/phpunit' сделал трюк для меня на новом laravel 5.4 install – ira

+0

Аналогичным образом это помогло мне во время работы над проектом Wordpress. Та же проблема: «phpunit» можно глобально зарегистрировать и настроить по-разному. Спасибо, что поделились! – sqsinger

1

Вы добавили тестовый набор к вам в файл phpunit.xml?

<phpunit> 
    <testsuite name="app1" > 
     <directory>./</directory> 
    </testsuite> 
</phpunit> 

Вы можете добавить несколько каталогов.

+0

Привет, извините, если я не уточнил в вопросе, но я добавил тестовый набор и соответствующее имя в файл XML. Копию можно найти здесь: http://pastebin.com/0j0L4WBD. –

+0

Попробуйте ./tests Aine

+0

Благодарим за обновление, к сожалению, у меня по-прежнему возникает проблема с **./Tests ** в качестве моего каталога. 'Время: 28 мс, Память: 1.50Mb Выполнено никаких тестов!' –

52

Ваш XML-файл в порядке, как есть. Тем не менее, вы должны убедиться, что PHP файлы в папке tests/ названы следующим образом:

тестов/test.php < --- Обратите внимание на верхний регистр «T»
тестов/пользователь test.php
тесты/Foobar test.php
т.д.

имена файлов должны заканчиваться "test.php". Это то, что ищет PHPUnit внутри каталогов.

Кроме того, каждый метод испытания должен иметь имя, которое начинается с «тестом»:

public function testFooBar() 
{ 
    // Your test code 
} 

Надежда, что помогает!

+3

или вы можете использовать' --test-суффикс = anything.php', чтобы переопределить – checksum

+1

Я не уверен, как обе эти вещи никогда не упоминаются! Я потратил столько времени, прежде чем узнал эту информацию ... smh – Grant

+0

для меня было полезно заменить относительный путь на тестовую папку с абсолютным путем. –

-2

Вы должны написать абсолютный путь!

<directory>/absolute/path/to/tests</directory> 

С уважением.

0

Для меня, используя PHPUnit --debug показал мне, какое испытание она не выполняется, внутри, я был

$this->visit('/') 
     ->see('Laravel'); 

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

решение для меня было принять этот тест (или, скорее всего, вынимают .htaccess аутентификацию)

8

У меня была такая же проблема после PHPUnit на наших виртуальных машинах, обновленная до версии 6. Даже --debug и --verbose ничего полезного не сказал, просто «никаких тестов не выполнено». В конце концов выяснилось, что классы и пространства имен были изменены в новой версии, и он просто не хотел выполнять файлы, содержащие ссылки на старые классы. Исправление для меня было просто заменить в каждом тестовом случае это:

class MyTestCase extends \PHPUnit_Framework_TestCase {...} 

с:

use PHPUnit\Framework\TestCase; 

class MyTestCase extends TestCase {...} 
+0

А, да, хотя это не похоже на то, что это был ответ на исходный вопрос, он решил мою проблему после обновления до 6.x! – Tama

-2

используя де CMD консоль решена эта проблема, проходящая в enterely путь Test realized

я сделал» t найти другой способ сделать это It does not work from this way

Надеюсь, это было полезно для кого-то

2

Я понимаю, что это очень старый, но это случилось со мной тоже. Надеюсь, это поможет кому-то.

Моя проблема в том, что я забыл символ '@' в/** @test */

НЕПРАВИЛЬНО:

/** test */ 
function a_thread_can_be_deleted() 
{ 
    ... 
} 

ПРАВО:

/** @test */ 
function a_thread_can_be_deleted() 
{ 
    ... 
} 
0

Шахта была немного смешно ,

Когда я использовал php artisan make: test Я случайно поставил .php, как ProductRewardPointController.php, который создал ProductRewardPointController.php.php и phpunit просто проигнорировал его.

Я просто удалить лишние .php и вещи обратно к нормальному

0

Вам нужно всего лишь вызвать его из Vendor File

vendor\bin\phpunit Уведомления \ Not/

Смежные вопросы