如何在无类 php 文件上使用 PHPUnit Skeleton Generator?

Posted

技术标签:

【中文标题】如何在无类 php 文件上使用 PHPUnit Skeleton Generator?【英文标题】:How to use PHPUnit Skeleton Generator on classless php files? 【发布时间】:2014-12-04 23:52:05 【问题描述】:

我从这篇文章中听说了 phpUnit 能够自动生成基础测试文件:http://www.sitepoint.com/advanced-phpunit-testing-annotations-and-mocking/

(请注意,PHPUnit-skelgen 现在是与 PHPUnit 项目的其余部分分开的实用程序,它的源代码可以在这里找到:https://github.com/sebastianbergmann/phpunit-skeleton-generator)

如果我在以下代码中使用 phpunit-skelgen:

<?php

class TestClass 

    /**
     * @assert (1, 2) == 3
     */
    function add($a, $b) 
        return $a + $b;
    

?>

通过运行phpunit-skelgen generate-test TestClass,我收到了以下测试方法(以及通常的 phpunit 样板):

/**
 * Generated from @assert (1, 2) == 3.
 *
 * @covers TestClass::add
 */
public function testAdd()

    $this->assertEquals(
        3,
        $this->object->add(1, 2)
    );

我的问题是,是否可以让 phpunit-skelgen 为没有类的 php 文件创建测试?例如,我有一个相当大的文件,其中包含几个全局操作函数,我想让 phpunit-skelgen 为其创建测试,但是如果不将现有代码包装在一个类中,我看不到这样做的方法。


编辑:如果我尝试在具有函数但没有类的 php 文件上运行 phpunit-skelgen,这是输出:

theguy@workpc ~/Projects/PHPUnitSamples $ phpunit-skelgen generate-test noClass
phpunit-skelgen 2.0.1 by Sebastian Bergmann.




[RuntimeException]                                                                    
Could not find class "noClass" in "/home/perry/Projects/PHPUnitSamples/noClass.php".  



generate-test [--bootstrap="..."] class [class-source] [test-class] [test-source]

有人有什么建议吗?

另外,我注意到最近关于 phpunit-skelgen 的文档非常稀缺。有谁知道一些很好的教程或手册,或者自从 phpunit-skelgen 被移到它自己的单独项目中以来已经写过的东西?

【问题讨论】:

【参考方案1】:

文档可能很少,但第一行非常清楚目的:

phpunit-skelgen 是一个可以从生产代码生成骨架测试类的工具,反之亦然。

(添加了突出显示)

所以答案是,这是不可能的。

【讨论】:

以上是关于如何在无类 php 文件上使用 PHPUnit Skeleton Generator?的主要内容,如果未能解决你的问题,请参考以下文章

如何运行我所有的 PHPUnit 测试?

PHPUnit --coverage-html无效

我无法使用 phpunit 进行测试:无法打开文件“autoload.php”

在 php 8.1.0 上使用 phpunit 9.4 捕获警告、通知和弃用

如何将 PHPUnit 与 Zend 框架一起使用?

由于 phpunit 恶意文件 eval-stdin.php,端口 80 在 cpanel 上被阻止