测试不存在的代码

时间:2016-11-24 10:38:05

标签: php unit-testing testing phpunit tdd

TDD声称我应该首先编写测试。假设我想写一个服务,如果我还没有任何东西,我该如何开始为服务编写测试?什么是第一次测试?尝试实例化服务并获得异常?

基于PHP Laravel的示例:

class ServiceTest extends TestCase
{
    public function testServiceExists()
    {
        $service = App::make('grid');
    }
}

结果:

  

Sebastian Bergmann和贡献者的PHPUnit 5.5.4。

     

E 1   / 1(100%)

     

时间:123毫秒,内存:14.00MB

     

有1个错误:

     

1)ServiceTest :: testServiceExists ReflectionException:类网格   不存在

     

/home/supertrall/domains/md.local/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:749   /home/supertrall/domains/md.local/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php:644   /home/supertrall/domains/md.local/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:709   /home/supertrall/domains/md.local/laravel/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:237   /home/supertrall/domains/md.local/laravel/tests/Grid/ServiceTest.php:20

     

错误!测试:1,断言:0,错误:1。

2 个答案:

答案 0 :(得分:2)

在TDD中遇到这样的错误是件好事。这意味着您需要解决错误只是为了遇到另一个错误。

在TDD编码时,按wishful thinking进行编程。换句话说,在实现组件本身之前,您编写了一些使用组件的代码。这有助于发现您需要的功能和数据,并且通过此发现将引导您获得更简单实用的API。

尽管TDD概念不是很难学习,但是习惯TDD的测试优先开发方法既困难又耗时。您已走上正轨,只需阅读更多信息并进行更多测试即可熟悉该方法。

答案 1 :(得分:1)

你是正确的方式!

TDD是一种方法论。它需要一套学科,其中一个是红色,绿色,重构。它首先是编写测试,然后通过然后重构代码。

  • '红色' - 写失败测试
  • '绿色' - 让测试通过
  • '重构' - 清理代码

是的,一个类应该存在也可能是一个测试!

有关at:

的一些信息