PHPUnit-和#x27;未执行任何测试';使用配置文件时 问题
为了提高我的代码质量,我决定尝试学习如何使用单元测试来测试我的代码,而不是使用最好的测试解决方案 我决定使用composer为个人库安装PHPUnit,它允许我实现常见的数据库功能。起初,我没有PHPUnit的配置文件,当我运行以下命令时:PHPUnit-和#x27;未执行任何测试';使用配置文件时 问题,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,为了提高我的代码质量,我决定尝试学习如何使用单元测试来测试我的代码,而不是使用最好的测试解决方案 我决定使用composer为个人库安装PHPUnit,它允许我实现常见的数据库功能。起初,我没有PHPUnit的配置文件,当我运行以下命令时: $ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest 请注意,这是一个终端命令,因此我没有包括.php扩展名。上面提到的GeneralStringFunctionsTest实际上
$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest
请注意,这是一个终端命令,因此我没有包括.php
扩展名。上面提到的GeneralStringFunctionsTest实际上是一个GeneralStringFunctionsTest.php
文件
输出是我所期望的:
时间:31毫秒,内存:2.75Mb
OK(1个测试,1个断言)
然后,我尝试使用一个配置文件来自动加载测试套件,而不必每次都手动输入该文件。我在根目录中创建了一个名为phpunit.xml
的文件,并在该文件中输入了以下内容:
我得到以下输出:
Sebastian Bergmann和贡献者的PHPUnit 4.5.0
从/Users/muyiwa/Projects/DatabaseHelper/phpunit.xml读取配置
时间:16毫秒,内存:1.50Mb
没有执行任何测试
如果有帮助,我的目录结构如下:src-顶级目录(包含我所有的源代码)
测试-顶级目录(包含所有我的测试,结构与我的src文件夹相同)
供应商-编写器第三方文件 我还有composer json和lock文件,以及作为文件的顶层phpunit xml文件 我尝试过的事情
- 将
中的目录更改为phpunit.xml
tests/GeneralStringFunctions
- 将
中的目录更改为phpunit.xml
/tests
- 将
文件移动到phpunit.xml
目录,然后将目录更改为tests
而不是/
tests
- 向
中的目录标记添加后缀属性,以指定“Tests”作为显式后缀phpunit.xml
<phpunit>
<testsuite name="app1" >
<directory>./</directory>
</testsuite>
</phpunit>
./
您可以在其中添加多个目录。您的XML文件目前状态良好。但是,您必须确保
tests/
文件夹中的PHP文件命名如下:
tests/Test.php对于我来说,使用phpunit--debug向我展示了它没有执行的测试,
在里面,我有
$this->visit('/')
->see('Laravel');
我认为,由于目录受到.htaccess身份验证的保护,它无法访问该页面
对我来说,解决方案是取消这个测试(或者最有可能是取消.htaccess身份验证)因为它值得(迟到),我最近在为一个简单的网站制作一个新的Laravel 5.1项目时遇到了这个问题。我试图调试它,但在尝试时感到困惑:
php artisan make:test homeTest
(它有一个默认测试,该测试仅断言true为true)
看到了输出
No tests executed!
我最终遇到的问题与我的PHP安装有关——“phpunit”是全局注册的,配置方式不同,而Laravel安装附带的phpunit配置正确,运行完美
因此,修复程序正在运行供应商配置的phpunit(从与app/和tests/相同的根目录):
希望这能帮助别人 在虚拟机上的PHPUnit更新到版本6后,我也遇到了同样的问题。甚至--debug和--verbose也没说什么有用的话,只是“没有执行测试”。最后,新版本中的类和名称空间发生了更改,它只是不想执行包含对旧类的引用的文件。对我来说,解决方法就是在每个测试用例中替换以下内容:
class MyTestCase extends \PHPUnit_Framework_TestCase {...}
与:
使用de cmd控制台解决了通过enterely路径的此问题 我没有找到别的办法
我希望这对某人有帮助我意识到这太古老了,但它也发生在我身上。希望这能帮助一些人 我的问题是我忘记了测试中的“@”符号*/ 错:
/** test */
function a_thread_can_be_deleted()
{
...
}
对:
/** @test */
function a_thread_can_be_deleted()
{
...
}
我的有点滑稽
当我使用php artisan make:test
时,我意外地将.php放在了ProductRewardPointController.php
中,它创建了ProductRewardPointController.php.php
和phpunit,只是忽略了它
我只是删除了额外的.php,然后一切恢复正常您只需从供应商文件中调用它即可
vendor\bin\phpunit
注意\Not/这已经很晚了,但我希望这对某人有所帮助
我使用绝对引用来运行测试。
文件夹结构[project/tests/test.php]
我的目录行如下所示。/tests/test.php在windows上,在终端上使用以下命令
.\vendor\bin\phpunit
如果命令
phpunit
返回“未执行任何测试!”
在Mac上时
./vendor/bin/phpunit
希望有帮助。可能有一点偏侧,但如果您(像我一样)在Vagrant中使用Laravel,请确保您在Vagrant box中运行phpunit,而不是在“windows端”。) 在我决定使用--debug(顺便说一句,这是一个很好的方法)之前,我花了10分钟的时间才发现一个简单的事实,即文件名不遵守命名约定,最后我多了一个“s” 错 对
希望此便笺能对某人有所帮助如果您正在使用PHPSTORM转到设置,然后转到
然后单击+并选择测试框架
PHPUnit Local
然后在“脚本路径”字段中粘贴类似的内容使用Composer自动加载程序
C:\{YOUR PROJECT NAME}\vendor\autoload.php
/** test */
function a_thread_can_be_deleted()
{
...
}
/** @test */
function a_thread_can_be_deleted()
{
...
}
.\vendor\bin\phpunit
phpunit
./vendor/bin/phpunit
CreateAdminTests
CreateAdminTest
...
<testsuite name="Unit">
<!-- modify suffix -->
<directory suffix=".php">./tests/Unit</directory>
</testsuite>
<testsuite name="Feature">
<!-- modify suffix -->
<directory suffix=".php">./tests/Feature</directory>
</testsuite>
...
php artisan config:cache
/** @test */
/* @test */
[terminal] vendor/bin/phpunit tests
[terminal] phpunit tests
[terminal] vendor/bin/phpunit --filter 'Tests\\Routes\\AnyTest' Tests
php artisan make:test TestName //default is future testing
php artisan make:test TestName --unit //for unit testing
<server name="DB_CONNECTION" value="sqlite"/>
<server name="DB_DATABASE" value=":memory:"/>
vendor/bin/PHPUnit --filter function_name or classname
PHPUnit 7.5.20 by Sebastian Bergmann and contributors.
Usage: phpunit [options] UnitTest [UnitTest.php]
phpunit [options] <directory>