如何使用生成器完成现有的phpunit测试

时间:2014-01-26 21:57:15

标签: phpunit generator skeleton-code

PhpUnit有一个基于现有类的skel生成器。

但它有效。

如果稍后添加了一些新方法(因为dev不能与tdd一起使用),则测试文件不完整。

是否有工具为未覆盖的方法生成skel?

2 个答案:

答案 0 :(得分:0)

我不知道,我也没有看到需要。该骨架生成器为每个找到的函数生成一个测试方法,但是您无法在一个测试函数中测试稍微高级函数的所有用例。

此外,还会生成测试函数的名称 - 但可以而且应该创建更好的名称来描述测试函数的预期测试用例或行为。比如“testGetQuoteFromStockMarket”与“testGettingMicrosoftQuoteFromStockMarketShouldReturnQuoteObject”和“testGettingUmbrellaCorporationFromStockMarketShouldFailWithException”。

请注意,您不能在不抛出异常的情况下测试抛出异常。

总而言之,根本没有用于创建“每个方法一个测试方法”的用例,如果添加新方法,那么为此手动添加适当数量的新测试是你的任务 - 生成的代码覆盖率统计信息将告诉您您的表现如何,或者哪些功能未经测试。

答案 1 :(得分:0)

AFAIK没有内置的phpunit功能来更新自动生成的测试代码;这是大多数代码生成器的典型特征。

好消息是每个功能都非常干净且独立地添加。所以我要做的是将现有的单元测试文件重命名为* .old,重新生成一个新的测试文件,然后使用meld(或您选择的可视化差异工具)合并新的函数。

除此之外:无论如何,只有在新课程开始时才需要自动测试生成;每个功能只进行一次单元测试的想法更多的是为了取悦你的老板而产生良好的覆盖率统计数据;从构建好的软件的角度来看,有些功能需要多次测试,而且有些功能(想到的是getter和setter)并不需要任何功能,有时单个单元测试(getter和setter)最多可以覆盖多个功能。再次浮现在脑海中。)