我有一些存储库类,用于与IRepository接口派生的不同类型的数据进行通信.
在实现中,代码与数据源对话,这是XML文件或数据库的目录,甚至只是缓存.是否有可能对这些实现进行可靠的单元测试?我没有看到模拟实现工作,因为那时我只测试模拟代码而不是实际代码.
解决方法
不,当你编写一个使用IRepository的类时,你会使用mock.对于IRepository的实现,您需要针对相应的数据源进行测试.对于数据库来说,这有点痛苦 – 对于文件系统来说,稍微不那么容易.
在可能的情况下,如果您可以根据流或读者来表达您的实现,您将使您的生活更轻松:对实现的这些部分的测试可能违反内存中的数据源,或来自测试程序集中的资源的流.当然,您可能需要进行一些真实数据库或文件系统的测试,但希望更少.
无论你是否称这种测试“单元”测试都是你如何定义单元测试的问题;我个人对所涉及的名字并不太在意,但我确实关心进行测试.特别是对于数据库而言,这些可能会有些痛苦(特别是如果您希望能够并行运行测试) – 但根据我的经验,它们也可能非常有价值.