2

我是测试的坚定支持者,我认为必须创建额外的接口才能编写单元测试是很小的代价。我已经在测试套件中添加了结构映射 automocker,它似乎绝对无法模拟类。只要公共方法被标记为虚拟,Rhino mock 就可以模拟公共类。

如果可能的话,我想摆脱接口。任何和所有的帮助表示赞赏。

4

1 回答 1

1

在回答这个问题之前,我只想指出,当您不使用接口时,它完全违背了使用 StructureMap 的目的。(嗯,不完全,但足以让我质疑你为什么决定首先使用 StructureMap 的目的......)如果没有接口或者如果没有接口,你不会在测试中走得很远如果这样做,您将把所有逻辑放在一个类或 20-30 个类中,所有类都紧密耦合,这再次错过了使用 StructureMap 的意义。话虽如此,我认为这应该适用于您需要模拟一个具体类的情况

[Test]
public void TestMethod()
{
    // Arrange
    var service = new RhinoAutoMocker<BusinessRuleService>();
    service.PartialMockTheClassUnderTest();
    service.ClassUnderTest.Expect(x => x.VirtualMethodImTesting());

    // Act
    service.ClassUnderTest.CallableMethod();

    // Assert
    service.ClassUnderTest.VerifyAllExpectations();
    // ... or other stuff ...
}
于 2012-12-05T23:12:41.520 回答