Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
没有框架的PHP单元测试。。。可能的明智的_Php_Unit Testing_Frameworks_Homebrew - Fatal编程技术网

没有框架的PHP单元测试。。。可能的明智的

没有框架的PHP单元测试。。。可能的明智的,php,unit-testing,frameworks,homebrew,Php,Unit Testing,Frameworks,Homebrew,当您开始搜索PHP单元测试时,通常会发现: PHPUnit 简单测试 大量解释如何使用PHPUnit和SimpleTest的博客 关于PHPUnit和SimpleTest的堆栈溢出问题 …我想你明白了 我想知道:如何使用普通的ol'PHP进行单元测试?这是明智的努力吗 我想我必须建立自己的小框架。我之所以感兴趣是因为我想更好地理解单元测试中发生的事情。我也很感兴趣,因为我认为一个轻量级的、定制的解决方案可以更快地运行我的测试 附加问题:谁是失败者?是否有第三个框架值得研究(出于学术目的)?我的观

当您开始搜索PHP单元测试时,通常会发现:

  • PHPUnit
  • 简单测试
  • 大量解释如何使用PHPUnit和SimpleTest的博客
  • 关于PHPUnit和SimpleTest的堆栈溢出问题
  • …我想你明白了

    我想知道:如何使用普通的ol'PHP进行单元测试?这是明智的努力吗

    我想我必须建立自己的小框架。我之所以感兴趣是因为我想更好地理解单元测试中发生的事情。我也很感兴趣,因为我认为一个轻量级的、定制的解决方案可以更快地运行我的测试


    附加问题:谁是失败者?是否有第三个框架值得研究(出于学术目的)?

    我的观点是,标准车轮(很可能是PHPUnit)有什么问题,需要开发替代品?毕竟,在这种情况下,经验证的解决方案不是更明智的选择吗


    此外,如果您希望进一步利用持续集成服务器,那么标准工具的输出将更易于使用。(当然,您可以以相同的格式生成自己的工具输出,但这让我回到了“为什么重新发明轮子”的论点。)

    我大约一年前使用过SimpleTest,它非常轻量级。除了为您提供一种自动加载测试包和断言的方法之外,它实际上没有什么意义

    本质上,它包括所有以“test”开头的类,并且它将调用该类中以“test”开头的所有方法。在方法中,您可以断言结果是您所期望的


    如果您要构建自己的框架,我强烈建议您在构建之前先研究SimpleTest。与PHP单元相比,它非常轻量级(如果你害怕的话)。

    单元测试基本上是一组断言

    考虑以下PHPUnit测试用例:

    class MyTest extends PHPUnit_Framework_TestCase {
       public function testFoo() {
           $obj = new My;
           $this->assertEquals('bar', $obj->foo());
       }
    }
    
    您可以在不使用PHPUnit的情况下使用类似的测试用例:

    class MyTest {
       public function testFoo() {
           $obj = new My;
           assert("$obj->foo() == 'bar'");
       }
    }
    
    但是,在没有框架的情况下,您必须手动创建测试用例的实例(MyTest),并手动调用每个测试方法(MyTest::testFoo,等等)

    该框架(例如:PHPUnit)不过是一组“助手”,使其更简单、更快:通过自动生成骨架;内置模拟对象、命令行脚本等


    您仍然可以在没有框架的情况下进行单元测试,但最终,您可能会使用框架节省更多的时间,因为毕竟,框架通常就是用于此目的的。

    您可以在没有框架的情况下使用任何语言编写测试,但您在测试中共享的代码最终将成为一种小型框架

    一个好的单元测试框架将具有使测试更容易所需的常用功能,例如断言、模拟、存根、异常处理和代码覆盖率

    附加问题:谁是失败者?是否有第三个框架值得研究(出于学术目的)


    例如,PHP单元测试领域有一些弱者,这是一个内置了模拟和存根的单元测试框架。与大公司相比,它有一些优势——它有很好的文档记录,而且起步非常快。

    学习是一个有效的论点;不过,我不确定性能是否是其中之一。那些框架没有那么多开销。相关:PHPUnit不关心您使用哪个框架