小编Chr*_*ris的帖子

如何处理TDD中的接口过度使用?

我注意到,当我在做TDD时,它经常导致非常大量的接口.对于具有依赖项的类,它们以通常的方式通过构造函数注入:

public class SomeClass
{
    public SomeClass(IDependencyA first, IDependency second)
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是几乎每个类都将实现一个接口.

是的,代码将被解耦并且可以非常容易地进行单独测试,但是还会有额外的间接级别让我觉得有点......不安.有些事情感觉不对劲.

任何人都可以分享其他不涉及如此大量使用接口的方法吗?

你们其他人怎么样?

c# tdd unit-testing interface

23
推荐指数
2
解决办法
3326
查看次数

使用TDD:"自上而下"与"自下而上"

由于我是TDD新手,我目前正在开发一个小型C#控制台应用程序以便练习(因为练习很完美,对吧?).我首先简单地描述了如何组织应用程序(按类),并开始逐个开发我可以识别的所有域类(当然先测试).

最后,必须将类集成在一起以使应用程序可运行,即在Main方法中放置必要的代码,调用必要的逻辑.但是,我不知道如何以"先测试"的方式完成最后的整合步骤.

我想如果我使用"自上而下"的方法,我不会遇到这些问题.问题是:我该怎么做?我应该通过测试Main()方法开始吗?

如果有人能给我一些指示,我将非常感激.

tdd

21
推荐指数
1
解决办法
4621
查看次数

Rhino Mocks - AssertWasCalled:如何在不正确的参数时改进不清楚的诊断消息

当使用AssertWasCalled以验证是否已使用特定参数调用方法时,恕我直言,Rhino Mocks会生成不明确的诊断消息.

例:

interface ISomeInterface
{
    void Write(string s);
}

[TestFixture]
public class SomeTests
{
    [Test]
    public void WriteShouldBeCalledWithCorrectArguments()
    {
        // Arrange
        var mock = MockRepository.GenerateMock<ISomeInterface>();
        var sut = new SomeClass(mock);

        // Act
        sut.DoSomething();

        // Assert
        mock.AssertWasCalled(x => x.Write(Arg<string>.Is.Equal("hello")));
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果测试失败并显示此消息...

Rhino.Mocks.Exceptions.ExpectationViolationException:ISomeInterface.Write(等于hello); 期望#1,实际#0.

......你不知道它是否失败,因为

A.'Write'永远不会被调用 - 或 -
B.'Write'实际上是调用的,但参数不正确

如果B是导致失败的原因那么如果消息读取的内容会更加清晰:

Rhino.Mocks.Exceptions.ExpectationViolationException:ISomeInterface.Write(string arg):调用了方法,但参数不正确:预期:hello,Actual:bye

我可以自己解决这个缺点(通过某种方式为Rhino编写自定义匹配器)或者我只需要编写一个手动模拟器吗?

c# unit-testing rhino-mocks

11
推荐指数
1
解决办法
2760
查看次数

标签 统计

c# ×2

tdd ×2

unit-testing ×2

interface ×1

rhino-mocks ×1