PHPUnit - 当 dataProvider 返回空数组时不要失败

2024-01-01

我有一个 PHPUnit 测试,它使用@dataProvider。数据提供者检查文件系统中的某些文件。

但是,我在不同的环境中使用此测试,这意味着文件可能不存在。这意味着 dataProvider 没有找到任何内容,并且测试未执行。

这会导致测试运行以失败告终。

问题:是否有一种方法可以将 PHPUnit 配置为忽略提供程序不产生任何结果的测试?


虽然我不知道任何 phpunit 选项(这并不意味着不存在),但您可以使用如下所示的选项:

public function providerNewFileProvider()
{
    //get files from the "real" provider
    $files = $this->providerOldFileProvider();
    //no files? then, make a fake entry to "skip" the test
    if (empty($files)) {
        $files[] = array(false,false);
    }

    return $files;
}

/**
* @dataProvider providerNewFileProvider
*/

public function testMyFilesTest($firstArg,$secondArg)
{
    if (false === $firstArg) {
        //no files existing is okay, so just end immediately
        $this->markTestSkipped('No files to test');
    }

    //...normal operation code goes here
}

当然,这是一种解决方法,但它应该可以阻止错误的出现。显然,无论你做什么都取决于是否允许第一个(或任意任意)参数false,但您可以进行调整以适应您的测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHPUnit - 当 dataProvider 返回空数组时不要失败 的相关文章

  • PHP-Intl 对于 PHP V7.0.20 的行为有所不同

    我有以下代码 lang de AT currency 3333 formatter new NumberFormatter lang NumberFormatter DECIMAL formatter gt setAttribute Num
  • 如何使用 MAMP 在 mac 上安装 phpunit 3.5

    我正在尝试使用 MAMP 在 Mac OS X 上安装 PHPUnit 3 5 我确实通过 MAMP 的 PEAR 安装了 PHPUnit 3 5 这一切都是正确的 phpunit 位于 Applications MAMP bin php5
  • PHPUnit:尝试@cover或@use不存在的方法

    我正在学习如何使用 PHPUnit 4 3 5 PHP 5 5 14 进行单元测试 一切都很顺利 直到我尝试获得代码覆盖率 我收到此错误 尝试获取代码覆盖率时尝试 cover 或 use 不存在的方法 MyClass construct 我
  • 如何阅读/改进 PHP 计算的 C.R.A.P 指数

    我刚刚开始使用 PHPUnit 及其丰富多彩的代码覆盖率报告 我了解所有的数字和百分比 除了一个 C R A P 指数 谁能给我一个可靠的解释 解释它的含义 如何分析它以及如何降低它 Toader Mihai 提供了可靠的解释 https
  • 测试助手类的正确位置在哪里? (phpunit/最佳实践)

    我想使用 PHPUnit 测试我的应用程序 所以我像往常一样有我的应用程序类和第二棵带有测试类的树 现在我需要进行一些测试 一种虚拟 模拟对象 我想知道应该将它们放在哪里 它是一个不同的用例 它应该放在公共 lib 文件夹中还是更喜欢什么
  • 使用 PHPUnit 和 Selenium 设置测试

    您能帮我设置测试环境吗 我在 Ubuntu 上运行 安装了 并运行 selenium Web 服务器 并通过 PHPUnit 执行我的测试 最有可能的是我陷入了一些小错误 但我现在不知道如何修复它 我的代码很简单 class WebTest
  • 如何使用 PEAR 安装程序完全删除 PHPUnit?

    几天前 我使用 PEAR 安装程序安装了 PHPUnit 我还安装了 Selenium RC 用于 PHP 测试 现在我想卸载它 同时删除所有相关的文件夹和文件 我运行了以下命令 pear uninstall phpunit PHPUnit
  • 在 phpunit 中 __construct 与 setup 之间有什么区别?

    我很想知道在测试类 construct 中创建对象是一种很好的做法 或者我们应该始终使用 setup teardown 方法 或 setUpBeforeClass tearDown AfterClass 方法 我知道每个测试都会调用 set
  • 仅在 PHPUnit 中需要时才执行 dataProviders?

    我的测试套件即使只是开始也需要几分钟 这是因为数据提供者在 phpunit 启动时立即执行 并且它们的所有数据 数千个对象 都保存在内存中 有没有办法在测试运行之前调用 dataProviders 我不在乎在屏幕上看到如此精确的进展 Tha
  • 如何通过 PEAR 安装旧版本的 PHPUnit?

    我想将 PHPUnit 3 4 的安装降级到 3 3 我只是不知道该怎么做 如何使用 PEAR 在 Ubuntu 上安装 PHPUnit 3 3 版本 您需要知道要降级到的确切版本号 在撰写本文时 您所使用的最后一个版本是 3 3 17 可
  • BrowserKit 组件不可用

    当我尝试启动功能测试时出现错误 BrowserKit 组件不可用 php bin phpunit usr bin env php PHPUnit 6 5 14 by Sebastian Bergmann and contributors T
  • 为什么 symfony DOMCrawler 对象无法在依赖的 phpunit 测试之间正确传递?

    我有一个适用于我的 symfony 应用程序的 phpunit 测试套件 在该测试文件中 我在不同的测试之间有一些依赖关系 并在依赖关系之间传递一个 DOMCrawler 对象 这样我就不必每次都导航到它 但是 在采用我所做的方法时 您似乎
  • 如何使用 phpunit 测试内部数组

    我必须测试带有内部数组的数组 我的数组如下所示 testdata Array 0 gt Array label gt Ammy idr gt user7 rel gt 7 1 gt Array label gt sidh idr gt us
  • 如何在 Symfony 4 中为测试环境设置数据库

    我对如何在 symfony 4 中为测试环境设置数据库感到困惑 我曾经在配置测试 ymlsymfony 3 及以下版本中的文件 最佳做法是什么 我应该重新创建一个学说 yaml文件输入配置 包 测试 该文档提到如何通过编辑 phpunit
  • 来自本地 XML 的模拟 SoapClient 响应

    我想用文件中的 XML 来模拟 SoapClient 的响应 我如何创建一个 stdClass 对象 就像 SoapClient 从文件返回一样 客户端已经包装了 SoapClient 因此可以轻松模拟响应 我的模拟是这样的 soapCli
  • 如何将 ZF2 单元/应用程序模块测试合并到单个调用中?

    我遵循将测试存储在模块中的 ZF2 约定 并且当从每个模块内运行测试时一切正常 我想做的是有一个根级别的 phpunit xml 来调用各个模块测试并将它们合并以生成代码覆盖率数据和其他指标 问题是每个单独的测试套件都是在模块化 phpun
  • phpunit 中的组/过滤器不执行特定的测试用例

    我有一个套件 它调用多个套件和许多用于日志 报告和执行的函数 如果我尝试相同的 组或过滤器 模式 它会执行所有测试用例 而不执行选定的单个测试用例 Edit 我正在使用数组套件 如下所示 suite gt addTestSuite admi
  • 如何使用 Doctrine 实体创建测试而不保留它们(如何设置 id)

    我正在为 Symfony2 项目进行测试 现在我正在寻找一种方法来创建涉及实体对象的测试而不保留它们 问题是 id是一个私有字段 并且没有设置器 我可以创建新对象并设置一些属性 但我无法测试涉及的任何内容getId calls entity
  • 如何使用 PhpUnit 测试在 POST 方法中传递 JSON?

    我正在使用 symfony 3 0 和 phpUnit 框架 3 7 18 单元测试文件 abcControllerTest php namespace AbcBundle Tests Controller use Symfony Comp
  • PHP7.4中如何让PHPUnit测试属性初始化?

    采用 PHP7 4 类型化属性时 我们的应用程序中的代码样式更改之一是从 if null object gt value to if empty object gt value 即使类型化属性可为空 第一个 if 语句也会抛出Error 下

随机推荐