我写了一些单元测试围绕FTP服务器API测试一个包装。我的单元测试应该在测试该API的包装时直接触摸API吗?
单元测试和FTP服务器都在同一台机器上。
包装器API被部署到我们的平台并用于远程处理和Web服务场景。包装API实质上是通过XML消息来执行任务,例如添加/删除/更新用户,更改密码,修改权限等等。
在单元测试中,比方说要将用户添加到虚拟域,我创建了要发送到API的XML消息。这个API可以工作并返回一个响应,其中包含有关操作是成功还是失败(错误代码,验证失败等)的状态信息。
要验证API包装器代码是否确实做了正确的事情(如果响应表示成功),我调用FTP服务器的COM API并直接查询它的存储以查看是否(例如创建用户帐户时)用户帐户确实已创建。
这味道不好吗?
更新1: @ Jeremy/Nick:包装是测试的重点,FTP服务器及其COM API是第三方产品,推测经过了充分测试和稳定。包装器API必须解析XML消息,然后调用FTP服务器的API。我将如何验证,这可能是一个愚蠢的情况,用户帐户的一个特定属性由包装器正确设置。例如,由于包装代码中的拼写错误,设置FTP帐户的错误属性或属性。一个很好的例子就是设置上传和下载速度限制,这些可能会被转换为包装代码。
更新2:感谢所有的答案。对于那些建议使用mock的人来说,它已经超出了我的想法,但是灯光还没有开启,我仍然在努力让自己的头脑变得如何让我的包装与FTP服务器的模拟一起工作。 mock将驻留在哪里,并且将所述mock的一个实例传递给包装API以使用而不是调用COM API?我意识到嘲笑,但努力让自己头脑发热,主要是因为我发现大多数示例和教程都非常抽象,而且(我很惭愧地说)接近不可理解。
已经研磨过的这种过度的年龄我现在终于明白,当我的单元测试,组件测试或集成测试以及它们的真正含义。 – Kev 2010-03-22 03:45:57