我是测试的巨大支持者,我认为必须创建额外的接口才能编写单元测试是很小的代价。我已经为测试套件添加了结构图自动插件,它似乎绝对无法模拟类。只要公共方法被标记为虚拟,Rhino mock就能够模拟公共类。
如果可能,我想摆脱接口。任何和所有帮助表示赞赏。
答案 0 :(得分: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 ...
}