您如何决定选择什么:
答案 0 :(得分:2)
这取决于您要测试的内容。与合作者嘲笑的单元测试非常好,因为
然而,纯单元测试无法告诉您是否已在IoC容器中正确配置对象,如果数据库连接字符串正常工作等。您需要一个测试来运行您的IoC容器并真正接触到Db来证明这些东西。
如果您尽可能多地编写测试作为纯粹的独立单元测试,那么您的构建将保持快速。这是至关重要的,因为缓慢的减少会减少。即便如此,也不要忘记添加一些有线测试来证明你的应用程序“在一起”。
例如,我们对容器中的每个服务都进行了(单个)测试,证明我们可以从IoC容器中请求它。这证明我们已经接通了,从那时起它就是单元测试。我们有很多纯粹的单元测试。
然后将整个批次包含在一些应用程序级别的功能测试中,以证明应用程序本身可以满足用户的需求。
要记住的是每种测试类型的时间成本。从纯单位移动 - >有线 - >功能测试在中断时会花费一个数量级的执行时间和复杂性。
答案 1 :(得分:1)
我很高兴在我的应用程序中使用IoC,特别是我感谢可以注入测试数据源进行测试。
对于更有问题的后端连接(当前是单个ESB调用)或需要复杂状态的函数,我会模拟。
答案 2 :(得分:1)
对于单元测试:如果对象不是测试对象,则模拟或存根。 这样,您可以直接控制它,以便返回您想要的数据。
如果您创建测试对象/对象图,则必须将其设置,以便它提供您想要的数据。这可能比你想要的工作多得多。
对于集成测试,您当然要一次测试整个对象图。
答案 3 :(得分:0)
如果你需要编写很多初始化代码 - 一个模拟框架可能会帮助你编写更好,更易于理解的单元测试。
无需重新编写模拟框架可以为您节省的代码。