使用验证测试(www.approvaltests.com或nuget)对View进行测试的单元足够简单。这里有一个视频:http://www.youtube.com/watch?v=hKeKBjoSfJ8
但是,它似乎也是你担心为了能够测试功能的目的而默认或公开一个函数。
这些通常被称为接缝;进入你的代码进行测试的方法。 他们很好。有时候,人们会将私人/公众与安全混为一谈,并且不敢公开私人职能,但反思也会称之为安全,所以它不是很安全。有时候人们会担心API的接口。但是,如果你有一个公共的API,并且如果你有一个winform应用程序,这可能意味着它是最高级别的(没有其他消费者会这么称呼它)。
你是程序员,因此可以设计你的代码以便于测试。这通常意味着比改变一些方法的公共和创建一些connivence方法,使依赖关系在传递多一点
例如:
buttonclick += (o,e)=> {/*somecode*/};
是很难测试。
private void button1_Click(object sender, EventArgs e) {/*somecode*/}
仍难以测试
public void button1_Click(object sender, EventArgs e) {/*somecode*/}
更容易测试
private void button1_Click(object sender, EventArgs e) { DoSave();}
public void DoSave(){/*somecode*/}
真的很容易测试!
如果您需要事件中的某些信息,这会增加一倍。即。
public void ZoomInto(int x, int y)
更容易测试对应的鼠标点击事件,并直通电话仍然可以是一个可忽略的线。
OK我有,但是如果我有我的形式访问我的商业逻辑1种或2的公共方法,并在我的业务逻辑,并依次访问私有方法,它足以给公众接口测试,以我的形式业务逻辑?而不是写单元测试直接测试我的私有方法? – DukeOfMarmalade 2012-02-01 14:39:23
@Jim - 是的,这被认为是可以接受的我的很多,因为测试的公共方法是行使私有方法中的代码。 (这真的不会比移除私有方法和公有方法内的代码转移到内部的块太大的不同。) – ziesemer 2012-02-01 14:43:48
同意了!谢谢! – DukeOfMarmalade 2012-02-01 14:57:20