【发布时间】:2015-02-23 17:23:19
【问题描述】:
我们正在使用 RhinoMocks 对我们的 wpf 应用程序进行单元测试。
在其中一个场景中,我们有一个方法 --
public void LetsAdd()
{
_mockableInterface1.DoSomething();
_mockableInterface2.DoSomethingElse();
}
现在,当我尝试对 LetsAdd 方法进行单元测试时,我可以断言是否调用了 doSomething() 和 DoSomethingElse()。但是我可以以某种方式测试它们是否按此顺序执行吗?
也就是说,如果我交换两个方法调用,我可以编写一个失败的测试吗?
谢谢
【问题讨论】:
-
很好奇为什么需要这样做。如果您要求一个方法在另一个方法之前被调用,那不应该在代码而不是测试中强制执行吗?
-
@Pierre-LucPineault...我想我需要提高我的搜索技能...感谢您的发现。如果可行,我会试试这个
-
@RufusL - 在大多数情况下,你所说的都是正确的
-
@RufusL 有多种情况可能会发生这种情况。例如,他可能试图通过他的 DAL 保存两个不同的实体,其中一个必须在另一个之前保存。反转调用只能在数据库级别(由于约束或其他原因)爆炸,这是他正在测试的抽象层之下的一个抽象层。由于它在数据库中,因此代码无法反映这一点(例如,没有返回值)。或者一个简单的
.Validate()然后 .Process(),其中 Validate 不返回值,您希望确保在处理之前调用它。或者在 XNA 中加载资源。
标签: c# .net unit-testing nunit rhino-mocks