我是PHPUnit和单元测试的新手,所以我通过作曲家安装了PHPUnit和phar,一切都很好,直到我尝试开始我的简单测试。我使用PhpStorm,我可以看到所有的类都是自动加载的,但是当我试图开始我的测试时,我得到了一个错误:
Fatal error: Class 'PharIo\Manifest\Simple' not found in C:\xampp\htdocs\mydocs\
我不明白他为什么要在高于PHPUnit的文件夹中查找它?
我试图在composer中配置自动加载部分。json和检查phpunit中的设置。xml,但什么都不起作用。
加:
我必须在没有PharIO的情况下重新安装PHPUnit,所以现在我有了一点进展,现在我有了一个情况,如果我使用测试类的名称创建require_once行,我可以测试我的类。它看起来像:
require_once '../src/Simple.php';
class SimpleTest extends PHPUnit_Framework_TestCase
{
public function testAdd() {
$sum = new Simple();
$this->assertEquals(5, $sum->add(2, 3));
}
}
所以我的简单类是:
class Simple {
public function add($a, $b) {
return (int) $a + (int) $b;
}
}
但是,当然,我想使用名称空间。我试图根据这个问题做一些改变:使用作曲家和autoload.php在PHPUnit中自动加载类(我甚至尝试使用该回购进行测试,但仍然存在错误),但没有什么对我有效。我试图在composer.json中编辑我的自动加载部分
"autoload": {
"psr-4": {
"app\\": "src/"
}
},
但错误仍然存在,换言之自动加载无法看到它。我是普尼特。xml和phpunit。具有相同设置的dist.xml
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/3.7/phpunit.xsd"
backupGlobals="true"
backupStaticAttributes="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false"
bootstrap="./tests/bootstrap.php">
<testsuites>
<testsuite name="The project's test suite">
<directory>./tests</directory>
</testsuite>
</testsuites>
</phpunit>
我做了测试/引导。php也与
require_once '../vendor/autoload.php';
Composer的自动加载依赖于供应商/自动加载中的配置。php
文件,需要在执行线程中的某个点加载该文件。您的应用程序已经包含了这个,这就是它工作的原因,但是测试使用不同的入口点,所以您需要使用名为phpunit的文件对其进行配置。xml。dist
。
假设您的文件结构类似于:
app/
src/
tests/
bootstrap.php <- create it in your test folder
vendor/
...
composer.json
composer.lock
phpunit.xml.dist <- create it if does not exist
您可以在这里看到各种选项,但对于基本配置,您可以使用此选项。
文件phpunit.xml.dist
:
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/3.7/phpunit.xsd"
backupGlobals="true"
backupStaticAttributes="false"
bootstrap="tests/bootstrap.php">
</phpunit>
文件测试/bootstrap.php
:
require_once '../vendor/autoload.php';
您应该从根目录运行phpunit
。
您可以按照另一个答案中的建议,通过在XML文件中自动加载来指定文件,或者只需在运行测试的命令中指定--bootstrap
选项:
phpunit——引导供应商/自动加载。php测试
我知道这是一个老问题,但也许你需要这样做
composer dump autoload
,用于composer生成类的映射。
我浪费了30分钟试图理解为什么PHPUnit给了我:
不能存根或模拟类或接口XXX,因为它不存在
这是一个关于PHP单元测试的问题,给出了一个类NotFound错误。 背景资料 我正在使用Zend Studio 10.5开发Zend Framework 2应用程序。我加载了一些模块,包括和 FedcoUser是具有使用BJYAAuthorize的保护规则的控制器保护的模块: 使用Zend Studio 10.5本机菜单,我为上面的控制器创建了一个测试用例。当我运行它时,我得到以下错误: 我的假
在试图用PHPUnit设置Eclipse作为单元测试库时,我陷入了试图运行一个简单测试用例的困境。作为参考,我按照本教程使用PHPUnit/Xdebug/Makegood来设置Eclipse,唯一偏离给出的指导方针是为PHPUnit/Makegood设置以下配置文件: 现在,问题的根源在于,我似乎无法使用Makegood从Eclipse运行PHPUnit测试。我编写的唯一测试(位于名为test.p
我有一套硒测试。例如,有时“断言声明”会失败。在某些情况下,这可能是因为有人破坏了某些东西,而用户界面点击顺序的结果是一个错误,导致网站的错误页面被显示。 如何检查是否每一次失败都发生了这种情况,而不必在任何地方实现对以下方法的调用? 目的是简单地通过电子邮件发送显示页面的html源,如果该页面被证明是一个错误页面。
我有一个类似的问题,在这里描述: 一切都按照我的预期工作;我的代码访问数据库并打印输出,不管我是从命令行界面还是从网络浏览器运行。同样的结果。如果我用PHPUnit在Eclipse中运行它,我会得到一个错误: 哪些点位于下一行: 此代码打印出“是”。 还有一点需要指出的是,我在上面代码所在的类中使用自己的名称空间。我的单元测试在全局命名空间中。 我已经按照上面的URL中的步骤,但是,唉,没有用。:
我正在玩PHP 7和phpUnit 6。这是我写的测试: 当我尝试运行此测试时,收到以下错误消息: 我用composer安装了PHPUnit,这是我的composer。json文件内容: 根据phpunit6文档,您的测试现在应该扩展PHPUnit\Framework\TestCase而不是PHPUnit\u Framework\u TestCase。 我知道这不是自动加载的问题。实际上,如果我用
我正在用开发一个API,我目前正在尝试用实现一些单元测试。当我通过命令行运行测试时,我一直遇到一个错误: 我的composer.json是这样的: 我的测试类是这样的: 如果我注释掉整个第二个测试,留下use语句,第一个测试将毫无问题地通过。我认为这可能与测试文件的位置有关,因此我将其移动到classes/app目录,在那里我有其他具有类似导入的类,并且我看到了相同的结果,因此我认为这与文件所在的