问题描述
我已经全局安装了 PHPUnit 并设置了一个环境变量“path”,所以它通过命令 PHPunit.phar
function is_id_term(string $q,&$id = null,string $name = 'id'): bool {
...
...
...
...
...
}
之后,我在 composer.json 文件的自动加载部分添加了以下行:
"files": [
"./app/functions.PHP"
]
然后我运行命令:
composer dump-autoload
然后在 tests/unit/
文件夹中创建单元测试:
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class IsIdTermTest extends TestCase
{
public function testOne()
{
$res = is_id_term('id: 1');
$this->assertTrue($res);
}
public function testString()
{
$res = is_id_term('id:lucas');
$this->assertFalse($res);
}
}
如果我使用 PHPStorm 右上角的绿色按钮运行这些测试,我会收到以下错误:
C:\localserver\PHP8.0.2\PHP.exe C:\Users\webgr\AppData\Roaming\Composer\vendor\laravel\installer\bin\PHPunit.phar --no-configuration C:\Users\webgr\projects\my-blog\tests --teamcity --cache-result-file=C:\Users\webgr\projects\my-blog\.PHPunit.result.cache
Testing started at 19:00 ...
PHPUnit 9.5.4 by Sebastian Bergmann and contributors.
Error : Call to undefined function Tests\Unit\is_id_term()
C:\Users\webgr\projects\my-blog\tests\Unit\IsIdTermTest.PHP:11
使用绿色按钮开始测试后,在项目根文件夹.PHPunit.result.cache中出现文件,内容如下
C:37:"PHPUnit\Runner\DefaultTestResultCache":230:{a:2:{s:7:"defects";a:2:{s:32:"Tests\Unit\IsIdTermTest::testOne";i:4;s:35:"Tests\Unit\IsIdTermTest::testString";i:4;}s:5:"times";a:2:{s:32:"Tests\Unit\IsIdTermTest::testOne";d:0.004;s:35:"Tests\Unit\IsIdTermTest::testString";d:0;}}}
但是,如果我在终端中执行命令:
PHPunit.phar
然后所有测试都通过而没有错误。
同样,如果我在其他文件中单击它的名称,PHPStorm 也可以毫无问题地找到该函数。
解决方法
尝试更换
UIImage(named: name,in: Bundle.module,compatibleWith: nil)
与
use PHPUnit\Framework\TestCase;
use Tests\TestCase;
命令似乎总是生成带有引用为 artisan make:test {name} --unit
的 TestCase 的模板
重新安装项目后,一切正常,但我仍然不知道错误的原因是什么。我相信原因是我在全局安装PHPUnit并配置XDebug之前创建了项目。虽然我当然可能是错的。