首页 > 解决方案 > 无法找到单元测试获取错误类

问题描述

我有一个dynamoDB位置类

src/Dynamo/shop.php 

我的课如下所示

<?php
    
    namespace App\Dynamo;
    
    
    class Shop
    {
        -----
    }
    
?>

我正在尝试为这个类实现单元测试,所以我在下面的位置创建了一个文件夹类发电机。

app/cake/tests/TestCase/Dynamo

在 Dynamo 文件夹中,我创建了一个带有文件名的类ShopTest.php

为了创建一个单元测试,我编写了这个类,如下所示

<?php
declare(strict_types=1);

namespace App\Test\TestCase\Dynamo;

use App\Dynamo\Shop;
use Cake\TestSuite\TestCase;

class ShopTest{
    
    public function setUp()
    {
        $this->shop = new Shop;
    }

    public function testconnectDynamoDB()
    {
        debug($this->shop->connectDynamoDB());

        $this->assertNotEmpty($this->shop->connectDynamoDB());

    }
}

现在运行 phpunit 命令后

vendor/bin/phpunit tests/TestCase/Dynamo/ShopTest.php 

我正进入(状态

Class 'App\Test\TestCase\Dynamo\ShopTest' could not be found in '/var/www/html/tests/TestCase/Dynamo/ShopTest.php'.

该位置存在课程,为什么找不到课程?

root@0ceda1df4444:/var/www/html# cd /var/www/html/tests/TestCase/Dynamo/
    root@0ceda1df4444:/var/www/html/tests/TestCase/Dynamo# ls
    ShopTest.php

root@0ceda1df4444:/var/www/html/tests/TestCase/Dynamo# cat ShopTest.php 
<?php
declare(strict_types=1);

namespace App\Test\TestCase\Dynamo;

use App\Dynamo\Shop;
use Cake\TestSuite\TestCase;

class ShopTest{

另外我正在尝试通过以下命令运行所有测试用例,我收到警告。

root@0ceda1df4444:/var/www/html# vendor/bin/phpunit                
PHPUnit 9.5.9 by Sebastian Bergmann and contributors.

Warning:       Your XML configuration validates against a deprecated schema.
Suggestion:    Migrate your XML configuration using "--migrate-configuration"!

No tests executed!

标签: cakephpcakephp-4.x

解决方案


没有测试班

那里的错误信息有点混乱,但关键是这不是一个测试类:

<?php
declare(strict_types=1);

namespace App\Test\TestCase\Dynamo;

use App\Dynamo\Shop;
use Cake\TestSuite\TestCase;

class ShopTest{ # <--

它只是一个类(巧合的是Test,它的名字中有这个词)。

与文档中的示例进行比较:

namespace App\Test\TestCase\View\Helper;

use App\View\Helper\ProgressHelper;
use Cake\TestSuite\TestCase;
use Cake\View\View;

class ProgressHelperTest extends TestCase # <--
{

要被检测为测试,该类必须扩展TestClass- 因此要纠正这一点:

...
use App\Dynamo\Shop;
use Cake\TestSuite\TestCase;

class ShopTest extends TestCase # <--
{

随着这种变化,测试类将加载,一些更容易解决的问题将变得明显:

$ vendor/bin/phpunit tests/TestCase/Dynamo/ShopTest.php
PHP Fatal error:  Declaration of ShopTest::setUp() must be compatible with Cake\TestSuite\TestCase::setUp(): void in ~/repos/cakephp/app/tests/TestCase/Dynamo/ShopTest.php on line 11

Fatal error: Declaration of ShopTest::setUp() must be compatible with Cake\TestSuite\TestCase::setUp(): void in ~/repos/cakephp/app/tests/TestCase/Dynamo/ShopTest.php on line 11

推荐阅读