unit-testing - 提供默认构造函数是否被认为是测试的最佳实践?

标签 unit-testing testing

我正在使用 Moles 框架进行模拟。我遇到了一些没有无参数构造函数的对象的障碍。当我创建有问题的对象时,我必须提供一个 ID,它会启动对数据库的调用以设置对象属性。这意味着通过 Moles 进行更多拦截。 如果对象有一个简单的构造函数,我的测试就会顺利得多。

我记得在某处听说提供默认构造函数对于测试很重要。当我去谷歌确认我的记忆时,我找不到答案。

提供无参数构造函数:对测试有帮助还是重要?无关紧要?

最佳答案

我认为无论如何你都不应该在你的对象构造函数中做那种事情,因为它把你的测试与你的数据库联系得太紧密以至于没有任何用处。依赖注入(inject)框架,如 Ninject会在这里有很大帮助。您没有默认构造函数,但您进行了一些设置,让 Ninject 将您创建测试对象时所需的一切粘合在一起。

我只是开始使用 Ninject(并使用 Moq),所以我没有大量的经验,但它消除了对用于测试的默认构造函数的需要。它还可以进行更多整理,并有助于使您的测试完全独立于任何外部事物。

我知道这是一个与语言无关的问题,因此 Ninject 可能与您无关,但这是我对单元测试的一般看法。

关于unit-testing - 提供默认构造函数是否被认为是测试的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4341086/

相关文章:

c++ - CXXTEST 编译器是否有#define _KEYWORD_ 来排除代码块?

unit-testing - 为从中读取的函数填充 os.Stdin

测试 Web 应用程序 : "Mirror" ad-hoc testing in another window

java - Android 上的压力测试内存

testing - 在每个浏览器的钩子(Hook)之前运行

variables - caffe 在测试阶段忘记设置变量

javascript - 如何对使用另一个过滤器的过滤器进行单元测试

unit-testing - react native : Simulate offline device in Jest unit test

c# - 在 Visual Studio 2017 + NUnit + Resharper 中配置单元测试

java - 如何测试使用或不使用 Mocks 调用静态工厂方法的代码?