Laravel 4在TestCase中找不到测试

Posted

技术标签:

【中文标题】Laravel 4在TestCase中找不到测试【英文标题】:Laravel 4 No tests found in TestCase 【发布时间】:2013-02-10 23:03:42 【问题描述】:

我在使用 phpunit 时遇到了一些问题。当我执行测试时,phpunit 会给我这些警告:

1) 警告 在“Illuminate\Foundation\Testing\TestCase”类中找不到测试。

2) 警告 在“TestCase”类中找不到测试。

但我想忽略这些文件,这样 phpunit 就不会尝试从它们运行测试。

怎么做?

【问题讨论】:

【参考方案1】:

希望您现在找到了答案,但如果您还没有,这可能会有所帮助:

嗯 - 确保文件名和类名都匹配。为了 例如,没有文件名为 BarTest.php 的 FooTest 类。

另外,你确定你有一个 *Test.php 文件在 app/tests 目录?

[...]

就是这样,即我的一个测试在文件名与类名中有一个错字。奇怪的是,错字会在 TestCase 类中引发警告,而不是标记实际导致它的类。

来自: https://laracasts.com/forum/?p=83-warnings-for-testcase-illuminate-foundation-testing-testcase/0

基本上,确保您的文件名和类名匹配。我也对这个问题大发雷霆。

【讨论】:

如果测试用例(方法)没有从工作测试开始,也可能发生。 链接已失效(这就是为什么 SO 答案中的链接是个坏主意)。 快速提示:将基类(在本例中称为 TestCase)设为抽象类。 问题实际上是如何评估这些文件,而您正在回答如何确保它们是...跨度> 【参考方案2】:

另一个解决方案是使 TestCase 类抽象。通过这样做,PHPUnit 将不会尝试在其中找到任何测试。

abstract class TestCase

【讨论】:

也救了我。 PHPunit 抱怨在设置环境的基类中进行测试 这才是真正的答案。【参考方案3】:

对我来说,问题是类名与文件名不匹配,所以一个类定义为

class ExampleTest 

未命名为 ExampleTest.php。

如果您想忽略某些测试文件,则进入 phpunit.xml 文件和内部

<testsuite name="Application Test Suite">
    <directory></directory>
</testsuite>

用标签替换目录标签并指定您要使用的特定测试文件。

【讨论】:

【参考方案4】:

对我来说,我犯了一个约定错误。解决方案是将类名和文件从 TestFoo 更改为 FooTest

【讨论】:

【参考方案5】:

我也遇到了同样的问题。我检查了我的文件名和类名分别与AuthTest.phpAuthTest 相同。

但我仍然收到相同的警告,可能是因为我已将 ExampleTest.php 重命名为 AuthTest.php

无论如何我已经删除了以前的文件并使用了php artisan make:test AuthTest 并且成功了。

【讨论】:

以上是关于Laravel 4在TestCase中找不到测试的主要内容,如果未能解决你的问题,请参考以下文章

为啥,致命错误:在...中找不到类“PHPUnit_Framework_TestCase”?

在 Laravel 5 单元测试中找不到特征

在 laravel 4 中找不到类控制器

在 laravel 5.4 中找不到类“Illuminate\Foundation\Application”

PHPUnit 3.7 在 Laravel 4.1 中找不到控制器类

Laravel 4:致命错误:在 autoload.php 中找不到类 'Patchwork\Utf8\Bootup'