使用Codeception运行现有的Laravel 5.1 PHPUnit测试

使用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

我为Laravel5.1应用程序编写了许多测试,目前我正在使用PHPUnit来运行这些测试。我正试图研究codeception,因为我们还有其他不是基于Laravel构建的应用程序,所以codeception看起来是获得类似接口进行测试的最简单方法

我们有一个相当大的团队,因此我更愿意使用一个统一的命令来测试所有项目,而不是使用
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
    也应该仍然运行