为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
30秒到达战场 2022-01-24 10:45:29
如何表明phpunit 该类是测试类?/** @test */注释似乎仅适用test于名称中未附加字符串的方法那么如何在不将test字符串附加到其名称的情况下运行测试类呢?这是课程<?phpnamespace 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
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

在您的 phpunit.xml 中,将 suffix 属性添加到标签中。该示例将运行所有.php文件,如果您在那里没有任何 TestCase 类/文件,这可能会变得有风险,这就是为什么它的约定使用Test.


<testsuite name="Feature">

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

</testsuite>

希望这可以帮助!


查看完整回答
反对 回复 2022-01-24
?
慕沐林林

TA贡献2016条经验 获得超9个赞

它不读取类级别的/** @test */注释,但默认的 phpunit.xml 文件也具有使用文件名后缀定义的测试套件:


 <testsuites>

     <testsuite name="default">

         <directory suffix="Test.php">tests</directory>

     </testsuite>

 </testsuites>

如果您在特定文件上运行 phpunit:vendor/bin/phpunit tests/RepoPost.php它会运行测试,即使文件名与后缀不匹配。


查看完整回答
反对 回复 2022-01-24
?
慕容708150

TA贡献1831条经验 获得超4个赞

您可以使用后缀:

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

然后你应该将你的文件重命名为 RepoPostTest.php


查看完整回答
反对 回复 2022-01-24
  • 3 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信