问题 没有框架的PHP单元测试......可能吗?建议?


当人们开始搜索PHP单元测试时,通常会偶然发现:

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

......我想你明白了。

我想知道:如何用普通的'PHP'进行单元测试?这甚至是一个明智的努力?

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

奖金问题:谁是弱者?是否有值得研究的第三个框架(用于乙炔目的)?


2123
2018-01-12 15:13


起源

学习是一个有效的论点;不过,我不确定性能是否合一。这些框架没有那么多开销。 - Pekka 웃
有关: 2010年PHP单元测试框架的状态如何? - Pekka 웃
PHPUnit不关心您使用哪个框架 - Gordon


答案:


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

考虑以下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)只不过是一组“帮助者”,使其更容易,更快:通过自动生成骨架;内置模拟对象,命令行脚本等

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


9
2018-01-12 15:23





我的观点是标准轮(很可能是PHPUnit)的错误,保证了替代品的开发?毕竟,在这种情况下,不是一个经过验证的解决方案更明智的选择吗?

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


2
2018-01-12 15:17





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

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

如果您要构建自己的框架,我强烈建议您之前查看SimpleTest。与PHP单元相比,它非常轻巧(如果这让你害怕)。


1
2018-01-12 15:18



stackoverflow.com/questions/34312/simple-test-vs-phpunit - Christian Joudrey
stackoverflow.com/questions/4624093/... - Gordon


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

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

奖金问题:谁是弱者?是否有值得研究的第三个框架(用于乙炔目的)?

例如,PHP单元测试空间中存在弱点 增强PHP,这是一个内置模拟和存根的单元测试框架。它比大玩家有一些优势 - 它具有良好的文档,并且很快就可以开始使用。


1
2017-08-29 16:48