【问题标题】:Rhino Mocks exhibits different behaviour in debug modeRhino Mocks 在调试模式下表现出不同的行为
【发布时间】:2011-12-10 13:00:20
【问题描述】:

我有一个问题,当我 run 进行单元测试时,一个简单的 Rhino Mock 存根方法可以正常工作,但在 debug 模式下执行时会抛出异常 Can't create mocks of sealed classes。我尝试用Return 方法替换Do,但这并没有改变行为。

在 Rhino Mocks 3.6 中使用 C#,为在单元测试中使用 Add 函数减去而冒犯任何人表示歉意;)

界面

public interface ICalculator
{
    int Add(int value, int value2);
}

public class Calculator : ICalculator
{
    public int Add(int value, int value2)
    {
        return value + value2;
    }
}

public class Sums
{
    private ICalculator calculator;

    public Sums(ICalculator calculatorArg)
    {
        calculator = calculatorArg;
    }

    public int Add(int value, int value2)
    {
        return calculator.Add(value, value2);
    }
}

单元测试

[TestMethod()]
public void AddTest()
{
    //ARRANGE
    var calculatorArg = MockRepository.GenerateMock<ICalculator>();

    Func<int, int, int> subtract = delegate(int valueArg, int value2Arg)
    {
        return valueArg - value2Arg;
    };
    calculatorArg.Stub(x => x.Add(-1,-1)).IgnoreArguments().Do(subtract);

    Sums target = new Sums(calculatorArg);

    int value = 5;
    int value2 = 3;
    int expected = 2;

    //ACT
    int actual = target.Add(value, value2);

    //ASSERT
    Assert.AreEqual(expected, actual);
}

【问题讨论】:

  • 什么版本的 .NET 框架?此代码在 .NET 4.0(和 Rhino.Mocks 3.6)下的两种模式下都适用于我。如果您使用 GenerateStub 而不是 GenerateMock 会发生什么?
  • @PatrickSteele 嗯,你是对的,我重新创建了项目并且它正在工作。我的原始测试项目和新测试项目之间的目视检查显示没有任何变化——两者都使用相同的文件结构/内容和 .Net 框架(4.0)。我会做一个完整的比较,然后回帖

标签: c# rhino-mocks


【解决方案1】:

删除 suo 文件

解释: 在 PatrickSteele 好心地向我指出用我的代码创建一个新项目确实有效之后,我比较了原始项目和新项目中的每个文件,发现只有 suo 文件不同。 (Guids、项目名称等除外)。

删除解决方案的 .suo 文件后,问题就解决了。这个问题不是我最喜欢的答案,但仍然是一个答案。

【讨论】:

  • 有趣...感谢您的跟进。
  • 我刚刚重现了这个确切的问题并使用 3.6.0.0 修复。
【解决方案2】:

刚刚遇到这个问题。 我删除了隐藏的 .suo 文件,果然成功了。

那时我意识到通过删除设置,异常捕获选项也被删除了。它没有停止任何例外。重新启用“Debug”->“Exceptions...”中的选项会使错误重新出现。

然而,这是一个第一次机会异常,所以一个简单的 F5(继续)将跳过它,代码实际上按预期运行。

所以简而言之,删除suo文件的解决方案,意味着重置设置,从而忽略异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    相关资源
    最近更新 更多