单元测试和外部资源

时间:2010-10-09 22:46:15

标签: php unit-testing

我对单元测试有点新意,但我最近看到它如何非常有用。我已经看到大多数单元测试都是自行运行的。事实上,大多数单元测试框架提供了一次运行多个测试的方法(例如对整个系统进行单元测试)。

我不知道;你如何处理自运行单元测试中的外部资源?我喜欢测试整个系统并查看哪些类失败的想法,但是一个类可能会从上传的图像中创建缩略图。当依赖上传图像时,该测试如何自行运行?我会保留一个图像目录,并“假装”在测试中上传其中一个吗?

对此事的任何想法都将不胜感激。

5 个答案:

答案 0 :(得分:2)

如果您计划测试外部资源,那么它将是集成测试。在纯单元测试中 - >要测试外部资源,您必须模拟外部资源。因此,在这种情况下,您创建一个IDirectory接口,然后使用说FakeDirectory类,然后使用FakeDirectory“上传”图像。当您实际使用该应用程序时,您将传递一个实际目录。

在集成测试中,您可以拥有一个安装类,可以完成设置的所有工作,然后进行测试。

答案 1 :(得分:1)

如果您需要测试用户输入会发生什么,您确实需要一些样本数据。在单元测试中应该有一个包含图像,文本文件,PDF或其他任何其他内容的目录。或者,您可以在测试中以编程方式生成随机数据。

答案 2 :(得分:1)

是的,理想情况下,创建缩略图的类可以使用您在单元测试目录中作为资源提供的占位符图像。您应该能够单独测试该类,尽可能少依赖于应用程序的其余部分。当他们建议将代码设计为“可测试的”时,这就是人们的意思。

答案 3 :(得分:1)

模拟外部依赖项。我没有在php中嘲笑的真实经验,但我已经在网上看到了足够的资源,只是谷歌搜索模拟和PHP它正在完成

答案 4 :(得分:1)

我在单元测试我的PHP类时遇到了同样的情况。有些功能可以在不使用任何其他资源的情况下进行测试(单元测试),但许多功能执行文件读/写操作或需要数据库访问(集成测试)。为了测试这些功能,我将单元测试与集成测试结合起来。在我的setUp和tearDown测试类中,它可以加载数据库模式或从类函数所需的本地test_data /目录中获取测试数据。