问题标签 [isolation-frameworks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
598 浏览

c# - 我怎样才能重构这个工厂类型的方法和数据库调用是可测试的?

我正在尝试学习如何进行单元测试和模拟。我了解 TDD 和基本测试的一些原则。但是,我正在考虑重构以下未经测试编写的代码,并试图了解它需要如何更改以使其可测试。

这两个方法在一个类中。GetAgentFromDatabase 中的数据库相关代码与企业库相关。

我怎样才能使这个可测试?我应该将 GetAgentFromDatabase 方法抽象到不同的类中吗?GetAgentFromDatabase 是否应该返回 IDataReader 以外的内容?任何建议或指向外部链接的指针将不胜感激。

0 投票
3 回答
1426 浏览

.net - .net 的首选单元测试隔离框架

我使用RhinoMocks产品已经有一段时间了,并且对这个产品非常满意——从来没有真正去其他地方寻找的理由。我最近被TypeMock的好人要求试一试他们的产品,并且想知道其他开发人员对 Typemock Isolator 的看法。您是否会建议任何其他隔离/模拟框架,为什么?

0 投票
1 回答
164 浏览

c# - 使用工厂用隔离框架中的假货替换实例

一个月前,我读完了《单元测试的艺术》一书,今天我终于有时间开始使用 Rhino Mocks 对一个服务进行单元测试,该服务向设备 (UDP) 发送/接收消息并从数据库中保存/加载数据。
当然,我想隔离数据库和 UDP 通信。

例如对于数据库访问,我们有一些带有静态方法的类,我们称它们为:

  • 区域ADBAccess
  • 区域BDBAccess
  • 区域CDBAccess

这些类具有执行数据库访问的静态方法。
为了能够对它们进行存根,我将它们的方法设为公共虚拟。

然后我开始重构代码,以便能够在代码上替换这些类的实例。
在尝试了不同的事情之后,我最终得到了一个似乎让事情变得如此简单的工厂类。

然后在代码上,我可以使用

在测试方法上,我做了类似的事情

这是第一个解决方案,我意识到可以以更好的方式完成。
您现在可以发表评论并指出最佳实践吗?
您能否也向我解释一下为什么我想要一个接口而不是将方法定义为虚拟的?在 2 个地方重复方法头似乎没用。
谢谢!

0 投票
3 回答
303 浏览

unit-testing - 我们真的需要隔离框架来创建存根吗?

我读过这个:http ://martinfowler.com/articles/mocksArentStubs.html 我对存根和模拟的概念很清楚。我理解像 moq、rhinomocks 这样的隔离框架的需求,并且喜欢创建一个模拟对象。作为模拟,参与对期望的实际验证。但是为什么我们需要这些框架来创建存根。我宁愿推出一个手工创建的存根并在各种固定装置中使用它。

0 投票
2 回答
3486 浏览

c# - Moles Isolation 框架是如何实现的?

Moles是微软创建的隔离框架。Moles 的一个很酷的特性是它可以“模拟”静态/非虚拟方法和密封类(这在像 Moq 这样的框架中是不可能的)。下面是 Moles 可以做什么的快速演示:

似乎 Moles 能够DateTime.Now在运行时修改 CIL 主体。由于 Moles 不是开源的,我很想知道 Moles 使用哪种机制来在运行时修改方法的 CIL。任何人都可以解释一下吗?

0 投票
4 回答
1957 浏览

java - 哪个是 Java 最好的隔离框架?JMock、Easymock、Mockito 还是其他?

我意识到以前有人问过这个问题,但最后一次是在 2008 年年中。

如果你现在开始一个新项目,你会使用哪一个,为什么?它们在可读性、可用性、可维护性和整体稳健性方面的优势/劣势是什么?

0 投票
2 回答
54 浏览

.net - 您能否推荐我一种将数据库的示例部分创建为单元测试使用的 xml 文件的方法?

您能否推荐我一种方法或告诉我将数据库的示例部分创建为 xml 文件的最常见做法,以便我可以从单元测试中使用它,而不必担心 Db 状态是持久的?

是否有任何框架可以克服这样的场景,包括在每次测试后我可以返回到 XML 文件的先前状态的功能,这将是从 Db 获得的样本数据?

谢谢

0 投票
7 回答
612 浏览

c# - 模拟对象标准

在 Roy Osherove 的书 [Unit Testing][1] 中,他解释说单个单元测试应该包含 0 到 1 个模拟。他建议,如果您的测试没有在模拟上断言,那么根本不要使用模拟。他进一步演示了如何使用隔离框架来生成存根,这些存根的创建方式与模拟相似。他没有建议限制每次测试创建的存根数量。

我的问题是:这些建议可以应用于所有隔离框架(或所有流行的 C# 框架)吗?换句话说,是否有一个框架只能生成模拟 - 而不是存根?是否有不区分模拟和存根的隔离框架?

我只是好奇 Osherove 的建议可以多么容易地转换为编码标准。

[1]: http://被测系统根本没有被测试,取而代之的是从模拟返回的数据是正在测试的。

0 投票
2 回答
921 浏览

mocking - 有没有人让痣正常工作?

我试图找到关于如何使用痣隔离框架的一致描述,但在这个主题上没有找到太多。到目前为止,我做了以下事情:

  1. 从这里下载痣(x86 版本)。
  2. 安装它。
  3. 这里的人描述了如何将它与自定义库一起使用。所以我为我自己的图书馆添加了 moles 组件。重建后,程序集出现在参考资料中。
  4. 然后我尝试添加使用 .Moles 命名空间并构建项目,但失败并出现一堆错误。MDateTime 的示例也不起作用。MDateTime 只是没有任何方法。
  5. 考虑到这是让它工作的第 5 次失败尝试,我从系统中卸载了它。

所以问题是:痣对任何人都有效吗?如果是的话,你是怎么到那里的?我还应该安装 pex 以使其工作吗?如果我想通过 msbuild 脚本在构建服务器上使用它怎么办?我看到他们提到了对 msbuild 的支持,但是有没有人从 msbuild 中使用它的真正经验?

对我来说,在严肃的开发过程中使用它看起来很原始。也许有人有其他意见?

谢谢。

0 投票
2 回答
614 浏览

c# - Mono 测试的隔离框架

在阅读了有关 Moles 的好东西后,我想在我们的一组工具中添加一个隔离框架来编写单元测试。

我们的应用程序在 Mono 下运行,因为它同时部署在 Linux 和 Windows 上,我似乎找不到支持 Mono 的框架。

我看过一些关于使用 Cecil 操作程序集的文章,但我很难找到我们可以实际使用的任何东西。