我正在处理一个基本上没有单元测试覆盖率的大型代码库。我们即将开始朝着更多的测试驱动的方式移动,所以我想我会尝试写单元测试一个非常简单的函数,我添加,基本上如何测试有很多依赖关系的代码
class ClassUnderTest {
public void SetNoMatchingImage() {
currentState.State = FSMState.NoMatchingImage;
... // Some more logic
NotifyViews();
}
public ViewStatus GetStatus() {
...
if (currentState.State == FSMState.NoMatchingImage)
return ViewStatus.EmptyScreen;
...
}
...
}
好了,测试这个,我只想喜欢做的事:
[Test]
public void TestSetNoMatchingImage() {
ClassUnderTest view = new ClassUnderTest(...);
view.SetNoMatchingImage();
Assert.AreEqual(ViewStatus.EmptyScreen, view.Status);
}
但在这里我的问题是,ClassUnderTest构造函数接受3个参数到非接口不能为空,所以我不能很容易地创建一个ClassUnderTest。我可以尝试创建这些类的实例或对它们进行存根,但问题对于它们来说是一样的:每个构造函数都需要创建参数。这个问题与...相同。结果当然是非常大的开销,即使对于非常简单的测试也需要很多代码。
是否有一种处理这种情况的好方法,使测试用例更容易编写?
难道你不能只为你的classundertest创建一个门面模型吗? –