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 回答
在TDD中遇到这样的错误是件好事 . 这意味着您需要解决错误只是为了遇到另一个错误 .
在TDD中编码时,按wishful thinking进行编程 . 换句话说,在实现组件本身之前,您编写了一些使用组件的代码 . 这有助于发现您需要的功能和数据,并且通过此发现将引导您获得更简单实用的API .
尽管TDD概念不是很难学习,但是习惯TDD的测试优先开发方法既困难又耗时 . 您已走上正轨,只需阅读更多信息并进行更多测试即可熟悉该方法 .
你是正确的方式!
TDD是一种方法论 . 它需要一套学科,其中一个是 red, green, refactor . 它是关于首先编写测试,让它通过然后重构代码 .
'红色' - 写失败的测试
'绿色' - 让测试通过
'重构' - 清理你的代码
是的,一个类应该存在也可能是一个测试!
关于以下的一些信息:
Wikipedia
Red-Green-Refactor
The Cycles of TDD
TDD Basics : TDD Cycle : Red, Green, Refactor