使用Codeception运行现有的Laravel 5.1 PHPUnit测试
我为Laravel5.1应用程序编写了许多测试,目前我正在使用PHPUnit来运行这些测试。我正试图研究codeception,因为我们还有其他不是基于Laravel构建的应用程序,所以codeception看起来是获得类似接口进行测试的最简单方法 我们有一个相当大的团队,因此我更愿意使用一个统一的命令来测试所有项目,而不是使用使用Codeception运行现有的Laravel 5.1 PHPUnit测试,php,unit-testing,laravel,phpunit,codeception,Php,Unit Testing,Laravel,Phpunit,Codeception,我为Laravel5.1应用程序编写了许多测试,目前我正在使用PHPUnit来运行这些测试。我正试图研究codeception,因为我们还有其他不是基于Laravel构建的应用程序,所以codeception看起来是获得类似接口进行测试的最简单方法 我们有一个相当大的团队,因此我更愿意使用一个统一的命令来测试所有项目,而不是使用codeept和phpunit 下面是我作为我的codeception.yml尝试的内容: actor: Tester paths: tests: tests
codeept
和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
但我得到的回应是:
所以我的问题是:
我如何说服codeception以尽可能少的修改运行我现有的PHPUnit测试?经过一段时间后,我发现这是可能的,但您必须对测试的布局进行一些修改。不过,它的好处是,它不会阻止您运行PHPUnit本身
对于子孙后代,以下是如何做到这一点:
将单元测试和TestCase.php
移动到tests
文件夹下名为unit
的文件夹中
应该是这样的:
tests/
tests/unit/
tests/unit/MyUnitTest.php
tests/unit/TestCase.php
modules:
enabled:
- Laravel5:
environment_file: .env.testing
在tests/
文件夹中添加unit.suite.yml
文件
内容应如下所示:
tests/
tests/unit/
tests/unit/MyUnitTest.php
tests/unit/TestCase.php
modules:
enabled:
- Laravel5:
environment_file: .env.testing
使用测试类映射的正确文件夹将composer.json
更新为
在自动加载dev
部分:
"classmap": [
"tests/unit/TestCase.php"
]
更新您的TestCase.php
以从正确的文件夹加载bootstrap.php
这应该在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,应该运行codeception。作为奖励,phpunit
也应该仍然运行