我正在使用 Moles 框架进行模拟。我遇到了一些没有无参数构造函数的对象的障碍。当我创建有问题的对象时,我必须提供一个 ID,它会启动对数据库的调用以设置对象属性。这意味着通过 Moles 进行更多拦截。 如果对象有一个简单的构造函数,我的测试就会顺利得多。
我记得在某处听说提供默认构造函数对于测试很重要。当我去谷歌确认我的记忆时,我找不到答案。
提供无参数构造函数:对测试有帮助还是重要?无关紧要?
最佳答案
我认为无论如何你都不应该在你的对象构造函数中做那种事情,因为它把你的测试与你的数据库联系得太紧密以至于没有任何用处。依赖注入(inject)框架,如 Ninject会在这里有很大帮助。您没有默认构造函数,但您进行了一些设置,让 Ninject 将您创建测试对象时所需的一切粘合在一起。
我只是开始使用 Ninject(并使用 Moq),所以我没有大量的经验,但它消除了对用于测试的默认构造函数的需要。它还可以进行更多整理,并有助于使您的测试完全独立于任何外部事物。
我知道这是一个与语言无关的问题,因此 Ninject 可能与您无关,但这是我对单元测试的一般看法。
关于unit-testing - 提供默认构造函数是否被认为是测试的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4341086/