2009-04-14 42 views
2

最近,我开始在我们的产品中开发Email2SMS功能。当我加入项目时,这个组件通过单元测试没有代码覆盖率。遗留代码。用于命令行集成测试的PHPUnit

自从我开始研究它之后,我开始使用测试优先方法。但代码质量非常低。通过单元测试很难分割并测试小块,所以我决定编写集成测试。

有php脚本,它接受一些消息信息,在数据库中搜索用户并保存一些信息,如果一切正常。

$last_line = system('php emailtosms.php -file=unicode_message.txt ', $retval); 

$this->assertStringExistsInLogFile('Email to SMS message was not sent'); 

这是不好还是不好?你会如何解决这个问题?

回答

3

不太好。

通过将emailtosms.php脚本作为处理命令行参数的简单包装器,然后传递给更多可测试类来测试较低级别。根据最后一步,你可以编写单元测试来完成除最后发送之外的几乎每一个单元测试(也许模拟实际发送它的最后一步,然后将它存储到一个变量中,然后检查你在那里是否有效)。

最终的整合,运行完整的类端到端,并检查它的输出,看最后的日志 - 或更高一级的日志,将被放入什么。