ApplicationAvailabilityFunctionalTest不由PhpUnit执行

时间:2018-01-27 15:53:18

标签: php symfony phpunit

我已经实现了一些Symfony的best practices,即:

<?php

namespace App\Tests;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class ApplicationAvailabilityFunctionalTest extends WebTestCase
{
    private $client;

    public function __construct() {
        $this->client = static::createClient();
        $this->client->followRedirects();
    }

    /**
     * @param $url
     * @dataProvider urlProvider
     */
    public function testPageIsSuccessful($url)
    {
        $this->client->request('GET', $url);

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

    public function urlProvider()
    {
        return [
            ['/'],
            ['/en']
        ];
    }
}

然而,当我运行php bin/phpunit时,我得到:

No tests executed!

有人知道为什么吗?我在Symfony 4和PHPUnit 6.5.5

更新

这是我的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/6.1/phpunit.xsd"
         backupGlobals="false"
         colors="true"
         bootstrap="vendor/autoload.php"
>
    <php>
        <ini name="error_reporting" value="-1" />
        <env name="KERNEL_CLASS" value="App\Kernel" />
        <env name="APP_ENV" value="test" />
        <env name="APP_DEBUG" value="1" />
        <env name="APP_SECRET" value="s$cretf0rt3st" />
        <env name="SHELL_VERBOSITY" value="-1" />
        <!-- define your env variables for the test env here -->
        <env name="DATABASE_URL" value="postgresql://..." />
    </php>

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

    <filter>
        <whitelist>
            <directory>./src/</directory>
        </whitelist>
    </filter>

    <listeners>
        <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
    </listeners>
</phpunit>

在我的composer.json

"autoload-dev": {
    "psr-4": {
        "App\\Tests\\": "tests/"
    }
}

更多调查结果

当我使用与\src中相同的命名空间实现控制器测试类时,会检测到它并执行相同的测试!这里发生了什么?

1 个答案:

答案 0 :(得分:0)

我使用VSCode,Elon Mallin的PHPUnit 4.0.2插件,phpunit-9.0.1.phar。

当我在测试中添加* @test时,“未执行测试!”问题解决了。

/ ** * @测试 * @dataProvider environmentVariables * * / 公共函数get_client_ip_return_the_assert_When_Environment_The_Variable_Is_Found($ env,$ assert) {...

好的(6个测试,6个断言)

这可能是文档https://phpunit.readthedocs.io/en/9.0/writing-tests-for-phpunit.html#writing-tests-for-phpunit-data-providers中的疏忽。