Phpunit не запускает тесты Symfony

Я пытаюсь запустить несколько функциональных тестов в Symfony, но они не будут работать. Запуск phpunit, нацеленный на весь AppBundle, приводит к «Нет выполненных тестов», а нацеливание на определенный класс выдает мне эту ошибку:

$ phpunit tests/AppBundle/ApplicationAvailabilityFunctionalTest.php
PHP Fatal error:  Uncaught PHPUnit\Runner\Exception: Class 'tests/AppBundle/ApplicationAvailabilityFunctionalTest' could not be found in '/home/.../tests/AppBundle/ApplicationAvailabilityFunctionalTest.php'. in phar:///usr/local/bin/phpunit/phpunit/Runner/StandardTestSuiteLoader.php:107

Позже я обнаружил, что модульные тесты также не работают, то же самое сообщение об ошибке.

Функциональный тест, который я пытаюсь запустить, — это пример Symfony Best Practices:

// tests/AppBundle/ApplicationAvailabilityFunctionalTest.php
namespace Tests\AppBundle;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class ApplicationAvailabilityFunctionalTest extends WebTestCase
{
/**
* @dataProvider urlProvider
*/
public function testPageIsSuccessful($url)
{
$client = self::createClient();
$client->request('GET', $url);

$this->assertTrue($client->getResponse()->isSuccessful());
}

public function urlProvider()
{
return array(
array('/'),
array('/team'),
// ...
);
}
}

Я попытался настроить таргетинг на другой класс, DefaultControllerTest, но обнаружилось то же исключение.
Я использую phpunit версии 6.0.7 (загружается как Phar), Symfony 3.2 и PHP 7.0. Мне пришлось требовать phpunit / phpunit ^ 4.8 с composer, так как это исключение появилось:

PHP Fatal error:  Class 'PHPUnit_Framework_TestCase' not found in /home/.../vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Test/KernelTestCase.php on line 23

Я пытался использовать vendor/bin/phpunit вместо версии .phar, и, по крайней мере, он обнаруживает тесты, но все они имеют странные результаты.
Он не распознает ожидаемое исключение, например:

$ vendor/bin/phpunit -c phpunit.xml.dist
Error: Call to undefined method Tests\AppBundle\Util\Chart\ChartDataTest::expectException()

В функциональных тестах он, кажется, не достигает какого-либо пути, даже если они идеально доступны через браузер:

$ vendor/bin/phpunit -c phpunit.xml.dist
1) Tests\AppBundle\ApplicationAvailabilityFunctionalTest::testPageIsSuccessful with data set #0 ('/')
Failed asserting that false is true.

Это проблема версии?

composer.json файл:

    {
"name": "symfony/framework-standard-edition",
"license": "MIT",
"type": "project",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
"psr-4": { "": "src/" },
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},
"autoload-dev": {
"psr-4": { "Tests\\": "tests/" }
},
"require": {
"php": ">=5.5.9",
"symfony/symfony": "3.2.*",
"doctrine/orm": "^2.5",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2",
"symfony/swiftmailer-bundle": "^2.3",
"symfony/monolog-bundle": "^3.0",
"symfony/polyfill-apcu": "^1.0",
"sensio/distribution-bundle": "^5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"incenteev/composer-parameter-handler": "^2.0",
"phpunit/phpunit": "^4.8"},
"require-dev": {
"sensio/generator-bundle": "^3.0",
"symfony/phpunit-bridge": "^3.0",
"doctrine/doctrine-fixtures-bundle": "^2.3"},
"scripts": {
"symfony-scripts": [
"Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"],
"post-install-cmd": [
"@symfony-scripts"],
"post-update-cmd": [
"@symfony-scripts"]
},
"config": {
"platform": {
"php": "5.5.9"}
},
"extra": {
"symfony-app-dir": "app",
"symfony-bin-dir": "bin",
"symfony-var-dir": "var",
"symfony-web-dir": "web",
"symfony-tests-dir": "tests",
"symfony-assets-install": "relative",
"incenteev-parameters": {
"file": "app/config/parameters.yml"},
"branch-alias": {
"dev-master": "3.2-dev"}
}
}

Вот phpunit.xml.dist: (в настоящее время в корневой папке, без изменений с момента создания проекта)

<?xml version="1.0" encoding="UTF-8"?>
<!-- https://phpunit.de/manual/current/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.8/phpunit.xsd"backupGlobals="false"colors="true"bootstrap="app/autoload.php">
<php>
<ini name="error_reporting" value="-1" />
<server name="KERNEL_DIR" value="app/" />
</php>

<testsuites>
<testsuite name="Project Test Suite">
<directory>tests</directory>
</testsuite>
</testsuites>

<filter>
<whitelist>
<directory>src</directory>
<exclude>
<directory>src/*Bundle/Resources</directory>
<directory>src/*/*Bundle/Resources</directory>
<directory>src/*/Bundle/*Bundle/Resources</directory>
</exclude>
</whitelist>
</filter>
</phpunit>

3

Решение

Кажется, это была проблема версии: по какой-то причине, когда был создан проект Symfony, версия PHP была установлена ​​на 5.5, что ограничивало более свежие версии PHPUnit. Когда я скачал версию PHAR, это была версия 6.0 (которая не работала с версией проекта, с которой я работал — PHP 5.6 — но работала, так как мой php-cli был 7.0). В PHPUnit 4.8, который пришел через composer, тесты ApplicationAvailability были выполнены нормально (по крайней мере, это что-то странное, что происходит с моим кодом, я узнаю об этом позже), но все еще имел неловкое поведение (понятно, так как он практически не рекомендуется) , Когда я настроил composer.json с PHP 5.6 все было ясно: PHPUnit обновлен до 5.7, что прекрасно работает с PHP 5.6. Спасибо @mickadoo за указание, что тесты прошли нормально.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector