猿问

phpunit 运行名称中没有“test”的类

如何表明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);

    }

}

跑步


vendor/bin/phpunit --filter RepoPost

输出


未执行任何测试!


更新

这是我的phpunit.xml配置


<?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


30秒到达战场
浏览 118回答 3
3回答

汪汪一只猫

在您的 phpunit.xml 中,将 suffix 属性添加到标签中。该示例将运行所有.php文件,如果您在那里没有任何 TestCase 类/文件,这可能会变得有风险,这就是为什么它的约定使用Test.<testsuite name="Feature">&nbsp; &nbsp; <directory suffix=".php">./tests/Feature</directory></testsuite>希望这可以帮助!

慕沐林林

它不读取类级别的/** @test */注释,但默认的 phpunit.xml 文件也具有使用文件名后缀定义的测试套件:&nbsp;<testsuites>&nbsp; &nbsp; &nbsp;<testsuite name="default">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<directory suffix="Test.php">tests</directory>&nbsp; &nbsp; &nbsp;</testsuite>&nbsp;</testsuites>如果您在特定文件上运行 phpunit:vendor/bin/phpunit tests/RepoPost.php它会运行测试,即使文件名与后缀不匹配。

慕容708150

您可以使用后缀:&nbsp;<testsuite&nbsp;name="Feature"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<directory&nbsp;suffix="Test.php">./tests/Feature</directory> &nbsp;&nbsp;&nbsp;&nbsp;</testsuite>然后你应该将你的文件重命名为&nbsp;RepoPostTest.php
随时随地看视频慕课网APP
我要回答