首页 > 解决方案 > 在 PHPUnit 中找不到类但被 Visual Studio Code 识别

问题描述

当我在我的项目中运行 PHPUnit 时,我遇到了这个问题。

$ 供应商/bin/phpunit

PHPUnit 6.5.8 by Sebastian Bergmann and contributors.

Estring(29) "PHPFuzzy\Models\CriterionList"


Time: 59 ms, Memory: 4.00MB

There was 1 error:

1) FuzzyAHPTest::testDefineDecisionMaker
Error: Class 'PHPFuzzy\Models\CriterionList' not found

~/Documents/PHPFuzzy/tests/FuzzyAHPTest.php:10

ERRORS!
Tests: 1, Assertions: 0, Errors: 1.

测试/FuzzyAHPtest.php

use PHPFuzzy\Models\{FuzzyNumber as §, DecisionMaker, Criterion, CriterionList, Alternative, AlternativeList};
use PHPFuzzy\{ FuzzyMCDM, Utils };
use PHPUnit\Framework\TestCase;

class FuzzyAHPTest extends TestCase{
    public function testDefineDecisionMaker(){
        var_dump(CriterionList::class);
        $subcriteria1 = new CriterionList([
            new Criterion("SubCriteria 1"),
            new Criterion("SubCriteria 2"),
            new Criterion("SubCriteria 3")
        ]);
        $subcriteria2 = new CriterionList([
            new Criterion("SubCriteria 4"),
            new Criterion("SubCriteria 5"),
            new Criterion("SubCriteria 6"),
            new Criterion("SubCriteria 7")
        ]);
        $criteria = new CriterionList([
            new Criterion("Criteria 1", $subcriteria1),
            new Criterion("Criteria 2", $subcriteria2)
        ]);
        $alts = new AlternativeList([
            new Alternative("Kia"),
            new Alternative("Nissan"),
            new Alternative("Alfa Romeo")        
        ]);
        $dm = new DecisionMaker("Decision Maker 1", $criteria);
        $AHPSess = FuzzyMCDM::AHP($dm, $alts, $pcml);

        d($AHPSess->listPCMCombinations());
        // $this->assertEquals($expected->getMatrix(), $a->getMatrix());
    }


}

在作曲家.json

{
    "name": "bahadircyildiz/phpfuzzy",
    "description": "Fuzzy Logic library.",
    "keywords": ["fuzzy", "logic", "library"],
    "license": "MIT",
    "authors": [
        {
            "name": "Bahadir Can Yildiz",
            "email": "mail@bahadircyildiz.com"
        }
    ],
    "type": "project",
    "require": {
        "php": ">=7.0",
        "markrogoyski/math-php": "^0.39.0"
    },
    "require-dev": {
        "phpunit/phpunit": "*",
        "kint-php/kint": "*"
    },
    "suggest":{
        "ext-operator": "Enables FuzzyNumber class to use arithmetic operators."
    },
    "autoload": {
        "psr-4": {
            "PHPFuzzy\\": "src/"
        }
    },
    "autoload-dev":{
        "psr-4": {
            "PHPFuzzy\\Tests\\": "tests/"
        }
    },
    "conflict": {
        "phpunit/php-timer": ">=2"
    }
}

这是我的文件结构

src/
  MCDM/
    FuzzyAHP.php
  Models/
    Alternative.php
    AlternativeList.php
    Criterion.php
    CriterionList.php
    ...
tests/
  FuzzyAHPtest.php
  ...

总结一下,我可以转储CriterionList类名,但是当我想创建一个实例时,它找不到类。另一方面,Visual Studio Code 引用该类。

标签: phpvisual-studio-codephpunit

解决方案


我找到了解决方案。Composer 没有正确生成自动加载文件。使用composer update解决了这个问题。


推荐阅读