在供应商中让 Phpunit 测试正常工作

问题描述 投票:0回答:1

在供应商中让 Phpunit 测试工作

我在供应商目录中安装了一个名为

bbn
的库,我想在作为依赖项时运行测试。

在依赖项中,我注意到有些可以毫无问题地运行,但其他依赖项需要成为要运行的主项目。

bbn
库就是这种情况,但我不明白为什么。

试图实现这一目标,我对作曲家配置做了一些更改,但我仍然遇到相同的错误:未找到类。

这就是我设置作曲家的方式:

"autoload": {
    "psr-4": {
      "bbn\\": "src/bbn/"
    }
  },
  "autoload-dev": {
    "psr-4": {
      "bbn\\": "tests/"
    }
  },

我的测试位于名为“tests”的目录中。在这个“测试”目录中,我有另一个名为“测试”的目录(因此测试/测试),在这个测试文件夹中,我实现了两个包含一些特征的文件:

Reflectable.php:

<?php

namespace bbn\tests;

trait Reflectable
{
  ...
}

反射助手:

<?php

namespace bbn\tests;

class ReflectionHelpers
{
    ...
}

在我的主“测试”目录中(tests/),我实现了一个测试类,它调用我的可反射类,但在运行测试时出现错误:

XTest.php:

<?php

namespace bbn;

use bbn\X;
use Illuminate\Support\Str;
use PHPUnit\Framework\TestCase;
use bbn\tests\Files;
use bbn\tests\Reflectable;

class XTest extends TestCase
{
  use Reflectable, Files;

  ...

}

错误:

PHP Fatal error:  Trait "bbn\tests\Reflectable" not found in XTest.php

我可以得到任何建议吗?

php unit-testing phpunit
1个回答
0
投票

当您的库安装在

vendor
中时,
*-dev
配置不适用。因此,当库处于
vendor
时,不可能运行库测试。

如果您想运行库测试,您需要从其 Git 存储库加载它,然后运行它的

composer install
- 只有在这种情况下,它的
autoload-dev
才会处于活动状态。

© www.soinside.com 2019 - 2024. All rights reserved.