我为Laravel 5.1应用程序编写了许多测试,并且我目前正在使用PHPUnit来运行测试。我正在尝试研究代码接收,因为我们还有其他不在Laravel上构建的应用程序,因此代码接收看起来是获得类似接口进行测试的最简单方法。
我们有一个相当大的团队,所以我宁愿使用一个一致的命令来测试所有项目,而不是使用codecept
和使用phpunit
。
这是我尝试过的codeception.yml
:
actor: Tester
paths:
tests: tests
log: storage/codeception/_output
data: storage/codeception/_data
support: storage/codeception/_support
envs: storage/codeception/_envs
modules:
enabled:
- Laravel5:
environment_file: .env
但是我得到这个回应:
$ codecept run Codeception PHP Testing Framework v2.1.4 Powered by PHPUnit 4.8.18 by Sebastian Bergmann and contributors. [RuntimeException] Suite '' could not be found
所以我的问题是这样的:
我如何说服代码接受以最小的修改运行我现有的PHPUnit测试?
经过很多时间,我发现这是可能的,但是您必须对测试的布局进行一些修改。不过,好处是,它不会阻止您仅运行PHPUnit本身。
对于后代,这是如何做的:
TestCase.php
移到该文件夹unit
下命名的tests
文件夹中。它看起来应该像这样:
tests/
tests/unit/
tests/unit/MyUnitTest.php
tests/unit/TestCase.php
unit.suite.yml
文件添加到文件tests/
夹中。内容应如下所示:
modules:
enabled:
- Laravel5:
environment_file: .env.testing
composer.json
使用正确的文件夹将测试类映射更新到在您的autoload-dev
部分中:
"classmap": [
"tests/unit/TestCase.php"
]
TestCase.php
以bootstrap.php
从正确的文件夹加载。这应该在createApplication()
顶部的方法中TestCase.php
public function createApplication()
{
// $app = require __DIR__ . '/../bootstrap/app.php';
$app = require __DIR__ . '/../../bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
return $app;
}
最后,运行composer dump-autoload
,代码接收应该运行。作为奖励,phpunit
还应该仍然运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句