2011-01-12 77 views
11

当一个人开始搜索PHP单元测试,人们通常绊倒:没有框架的PHP单元测试...可能吗?建议?

  1. PHPUnit的。
  2. SimpleTest。
  3. 大量的博客解释如何使用PHPUnit和SimpleTest。
  4. 的StackOverflow有关的PHPUnit和SimpleTest的问题...

...我觉得你的想法。

我想知道:如何使用普通ol PHP进行单元测试?这甚至是一个明智的努力?我想我将不得不建立自己的小框架。我很感兴趣,因为我想更好地了解我的单元测试中发生了什么。我也很感兴趣,因为我认为一个轻量级的定制解决方案可以更快地运行我的测试。

红利问题:谁是失败者?是否有第三个框架值得研究(用于流行的目的)?

+2

学习是一个有效的论证;不过,我不确定演出是不是一个。这些框架没有那么多的开销。 – 2011-01-12 15:18:29

+0

相关:[2010年PHP单元测试框架的状态是什么?](http://stackoverflow.com/questions/2408860/whats-the-state-of-php-unit-testing-frameworks-in-2010) – 2011-01-12 15:19:00

回答

7

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

考虑以下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)只不过是一组“帮助器”,使其更容易和更快速:通过自动生成骨架;内置模拟对象,命令行脚本等。你可以在没有框架的情况下进行单元测试,但最终你可能会节省更多的时间,因为毕竟这通常是框架的用途。

2

我的看法是什么是错误的标准轮(PHPUnit在所有可能性),以保证替代的发展?毕竟,在这种情况下,没有证明的解决方案是明智的选择吗?

此外,如果您想要继续使用连续集成服务器,标准工具的输出将更易于使用。 (当然,你可以用相同的格式创建自己的工具输出,但这会导致我回到“为什么重新发明车轮”的论点)。

1

我在一年前使用了SimpleTest,它非常轻便。除了为你提供一种自动加载测试包和断言的方法之外,真的没有什么。

本质上它包括所有以“test”开头的类,它会调用该类内以“test”开头的所有方法。在方法内部,你可以断言结果是你所期望的。

如果您要构建自己的框架,我强烈建议您先考虑一下SimpleTest。与PHP单元相比,它非常轻量级(如果这会让你感到害怕)。

1

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

一个好的单元测试框架将具有让测试更容易的常见东西,比如断言,模拟,存根,异常处理和代码覆盖。

红利问题:谁是失败者?是否有第三个框架值得研究(用于流行的目的)?

有在PHP单元测试空间处下风,例如Enhance PHP,这是建在嘲笑和存根单元测试框架。它拥有的大玩家一定的优势 - 它具有良好的文档,非常快速开始。