Codeception单元测试

时间:2017-11-07 06:37:56

标签: php unit-testing codeception laragon

我是PHP和Codeception的新手以及单元测试的整个概念。到目前为止,我已经遵循了代码检查的快速入门指南(http://codeception.com/quickstart)并阅读了他们的文档(http://codeception.com/docs/05-UnitTests)。

我设法建立了测试环境,并且 1.创建单元测试文件(php codecept.phar generate:test unit ExampleTest) 2.运行测试命令(php codecept.phar运行单元ExampleTest),它返回错误: 有1个错误:

1) [35;1mExampleTest:[39;22m Validation
[37;41;1m Test [39;49;22m tests\unit\ExampleTest.php:testValidation
[37;41;1m                                  [39;49;22m
[37;41;1m  [Error] Class 'User' not found  [39;49;22m
[37;41;1m                                  [39;49;22m
#1  ExampleTest->testValidation
#2  C:\laragon\www\kario\vendor\bin\codecept.phar:5

我不明白的是,测试文件如何知道运行测试的哪个php文件?

我的laragon项目名为kario,位于C:\ laragon \ www \ kario \ resources \ views \ pages \ orders

,而测试单元文件在 C:\ laragon \ WWW \ kario \厂商\ BIN \测试\单元

1 个答案:

答案 0 :(得分:0)

我也有这个问题,并为自己找到答案。发表在这里http://phptest.club/t/beginner-codeception-unit-test-help/1849但是,你走了:

首先,一些细节。我正在使用Codeception v2.4.1,由PHPUnit 7.1.4提供支持。答案是:

在codeception.yml中,添加以下两行:

settings:
    bootstrap: _bootstrap.php

这里_bootstrap.php可以是你想要的引导程序文件的名称。

您必须将_bootstrap.php放在以下每个目录中,如下所示:

tests/unit/_bootstrap.php
tests/functional/_bootstrap.pp
tests/acceptance/_bootstrap.php

在我的tests / unit / _bootstrap.php文件中,我放置了以下代码:

<?php
use Codeception\Util\Autoload;
Autoload::addNamespace('myclassnamespace', __DIR__ . '/../../Classes/');

为了确保我有正确的Classes路径,我在添加Autoload行之前在_bootstrap.php中使用了trigger_error(DIR)。

然后在我的tests / unit / TestAddCest.php中,我将以下行放在文件的开头:

<?php
use mynamespace;

在我的测试函数中看起来像这样(注意User类的实例化):

public function tryToTest(UnitTester $I)
{
  $user = new mynamespace\User('someusername');
  $I->assertEquals('someusername', $user->username);
}

我输入了这个函数,因为我没有使用代码在同一台机器上并且不想让它完成,所以它可能有错误或错误,但你明白了。

编辑05/01/2018:其他人在http://phptest.club上回答了我:

最好在composer.json中配置类的自动加载,让composer完成剩下的工作,除非你试图避免使用composer。

https://getcomposer.org/doc/01-basic-usage.md#autoloading