良好的产品代码才能单元测试
如果产品代码是下面那样,你就没办法测试了。 因为WebService和EmailService两个类没有继承接口。我们无法把StubWebService和MockEmailService两个类注入到产品代码。
public class LogAnalyzer
{
private WebService webService;
private EmailService emailService;
public WebService WebService
{
get { return webService; }
set { webService = value; }
}
public EmailService Emailservice
{
get { return emailService; }
set { emailService = value; }
}
public void Analyze(string fileName)
{
if (fileName.Length < 8)
{
try
{
WebService.LogError("Filename too short:" + fileName);
}
catch (Exception e)
{
Emailservice.SendEmail("to@test.com", "from@test.com", "WebSerive log error", e.Message);
}
}
}
}
|
Mock框架
其实我们没有必要自己写MockEmailService方法。 已经有现成的Mock框架可以用了, .NET中有Rhino Mock 和 Moq, 这两个框架比较好用
点击此处下载完整的源代码 , 请用VS2008打开
[参考] The Art of Unit Testing
原文转自:http://www.uml.org.cn/Test/201210171.asp