gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 20:36:23 26 4
gpt4 key购买 nike

我为 Laravel 5.1 应用程序编写了许多测试,目前我正在使用 PHPUnit 来运行测试。我正在尝试研究 codeception,因为我们有其他应用程序不是基于 Laravel 构建的,因此 codeception 看起来是获得类似测试界面的最简单方法。

我们有一个相当大的团队,所以我更愿意使用一个统一的命令来测试所有项目,而不是一些使用 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

所以我的问题是:

我如何说服 codeception 以尽可能少的修改运行我现有的 PHPUnit 测试?

最佳答案

很多时间后,我发现这是可能的,但您必须对测试的布局方式进行一些修改。不过,好处是它不会阻止您运行 PHPUnit 本身。

为了后代,这里是如何做的:

  1. 将单元测试和 TestCase.php 移动到 tests 文件夹下名为 unit 的文件夹中。

它应该是这样的:

tests/
tests/unit/
tests/unit/MyUnitTest.php
tests/unit/TestCase.php
  1. tests/ 文件夹中添加 unit.suite.yml 文件。

内容应该是这样的:

modules:
enabled:
- Laravel5:
environment_file: .env.testing
  1. composer.json 更新为测试类映射的正确文件夹

在您的 autoload-dev 部分:

"classmap": [
"tests/unit/TestCase.php"
]
  1. 更新您的 TestCase.php 以从正确的文件夹加载 bootstrap.php

这应该在 TestCase.php 顶部的 createApplication() 方法中

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 也应该仍然运行。

关于php - 使用 Codeception 运行现有的 Laravel 5.1 PHPUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34045873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com