【发布时间】:2011-10-31 03:46:08
【问题描述】:
我正在开发一个基本上没有单元测试覆盖率的大型代码库。我们即将开始转向一种更加测试驱动的方法,所以我想我会尝试为我添加的一个非常简单的函数编写一个单元测试,基本上是
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 个参数传递给不能为 null 的非接口,因此我无法轻松创建 ClassUnderTest。我可以尝试创建这些类的实例或存根它们,但它们的问题是相同的:每个构造函数都接受必须创建的参数。问题是一样的......等等。结果当然是非常大的开销,即使是非常简单的测试也需要大量代码。
有没有很好的办法来处理这样的用例,让测试用例更容易编写?
【问题讨论】:
-
你不能为你的班级创建一个外观模型吗?
标签: c# unit-testing dependencies