我是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 \测试\单元
答案 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。