phpunit запускает класс без "test" в названии - PullRequest
1 голос
/ 23 сентября 2019

Как указать phpunit, что класс является тестовым классом?

Кажется, что аннотация /** @test */ работает только для методов, к имени которых не добавлена ​​строка test

Итак, как запустить тестовый класс без добавления строки test к его имени?

Вот класс

<?php

namespace Tests\Feature;

use Tests\TestCase;
/** @test */
class RepoPost extends TestCase
{
    /** @test */
    public function postSave()
    {
        $this->assertTrue(true);
    }

    /** @test */
    public function anotherOne()
    {
        $this->assertTrue(true);
    }
}

Running

vendor/bin/phpunit --filter RepoPost

Выходы

Нет выполненных тестов!

Обновление

Вот мой phpunit.xml config

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="tests/bootstrap.php"
         colors="true"
         processIsolation="false"
         stopOnFailure="false">
    <testsuites>
        <testsuite name="Feature">
            <directory>./tests/Feature</directory>
        </testsuite>
    </testsuites>
    <php>
        <server name="APP_ENV" value="testing"/>
    </php>
</phpunit>

Пока можно запуститькласс по полному пути, как указано @ Alister , вот так

vendor/bin/phpunit tests/Feature/RepoPost.php

Не удобно делать это снова и снова для каждого класса, особенно как часть процесса CI
В идеале класс должен работать в полном наборе тестов к

vendor/bin/phpunit

Ответы [ 3 ]

1 голос
/ 30 сентября 2019

В вашем phpunit.xml добавьте атрибут суффикса к тегам.В этом примере будут запускаться все файлы .php, что может стать рискованным, если у вас нет ни одного класса / файла TestCase, поэтому принято условно суффиксировать классы Test.

<testsuite name="Feature">
    <directory suffix=".php">./tests/Feature</directory>
</testsuite>

Надеюсь, что этопомогает!

1 голос
/ 23 сентября 2019

Он не читает аннотацию /** @test */ уровня класса, но в файле phpunit.xml по умолчанию также есть набор тестов с суффиксом имени файла:

 <testsuites>
     <testsuite name="default">
         <directory suffix="Test.php">tests</directory>
     </testsuite>
 </testsuites>

Если вы запускаете phpunit наконкретный файл: vendor/bin/phpunit tests/RepoPost.php он запускает тесты, даже если имя файла не соответствует суффиксу.

0 голосов
/ 30 сентября 2019

Вы можете использовать суффикс:

 <testsuite name="Feature">
        <directory suffix="Test.php">./tests/Feature</directory>
    </testsuite>

Тогда вам следует переименовать файл в RepoPostTest.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...