题
我想成为更好的有关单元的测试我的代码,但是我现在的写作大量的代码,涉及远程系统。SNMP工作之类的事情。与大多数类我可以模仿的对象对它们进行测试,但你如何处理单元的测试一个真正的系统?例如,如果我的班上去并得到Win32_LogicalDisk对象对服务器,我怎么可能单元的测试吗?
解决方案
假设你的意思是"我该如何测试的东西都硬不可能的模拟":
如果你有一类的,"出去,并得到Win32_LogicalDisk对象对服务器"和别的东西(消耗'Win32_LogicalDisk'对象在某些方),假设你想测试的碎片类消耗这个目的,你可以使用 依赖注射 允许你嘲笑'Win32_LogicalDisk'的对象。例如:
class LogicalDiskConsumer(object):
def __init__(self, arg1, arg2, LogicalDiskFactory)
self.arg1=arg1
self.arg2=arg2
self.LogicalDisk=LogicalDiskFactory()
def consumedisk(self):
self.LogicalDisk.someaction()
然后在你的单元测试码,通过在一个'LogicalDiskFactory',返回模拟对象为'Win32_LogicalDisk'.
其他提示
最简单的方法测试的东西都很难模拟是重构中的代码的方式,代码(逻辑这是值得测试)是在一个地方和其他东西,你的代码使用中的单独模块(s)。该模块是很容易模仿这种方式可以专注于自己的业务逻辑。
您可以创建一个"测试桩",代替核心的图书馆程序和返回的已知数值,或许在适当的延迟。
例如,最近,我需要制定代码的内部运行一个第3方的产品。我们面临的挑战是,我们的"合作伙伴"会做的汇编和整合他们的基码:我不允许 看看 他们的代码,在任何形式!我的战略是建立一个非常简单的程序,做了什么我 想 他们的代码有没有,根据信息从他们的工程师。我们使用的语言,使得它很容易开关各条的仿真程序和各建立,所以我可以做大量的测试之前,在涉及我们的合作伙伴建立的每一个新的迭代。
我会使用相同的方法再次,如软件的问题,在该特定产品是大约一个数量级,有少于在我们的下一次最可靠的产品!