C# 如何对方法/事件进行单元测试
我需要为ASP.net应用程序进行单元测试。因为我从来没做过。我想知道我如何能为事件做测试点击等等。。。或者检查方法返回的内容 你有什么例子可以分享吗?C# 如何对方法/事件进行单元测试,c#,asp.net,unit-testing,nunit,C#,Asp.net,Unit Testing,Nunit,我需要为ASP.net应用程序进行单元测试。因为我从来没做过。我想知道我如何能为事件做测试点击等等。。。或者检查方法返回的内容 你有什么例子可以分享吗? 提前感谢您可能可以从阅读开始,如果它需要变得更特定于ASP.NET,可能是这样。您将发现很难针对代码隐藏文件编写单元测试,因为您最终会遇到依赖于HttpContext存在的方法/事件。HttpContext是一个不从接口本身继承的密封类。这使得嘲笑成为不可能 假设必须存在有效的HttpContext,例如,单元测试将抛出的重定向对象未初始化异常
提前感谢您可能可以从阅读开始,如果它需要变得更特定于ASP.NET,可能是这样。您将发现很难针对代码隐藏文件编写单元测试,因为您最终会遇到依赖于HttpContext存在的方法/事件。HttpContext是一个不从接口本身继承的密封类。这使得嘲笑成为不可能 假设必须存在有效的HttpContext,例如,单元测试将抛出的重定向对象未初始化异常 您可以通过应用Model View Presenter MVP模式或类似模式,使asp.net应用程序更易于单元测试,而不是在遇到这些问题时处理它们。 将UI与业务逻辑和模型分离 其思想是将所有业务逻辑从代码隐藏文件移到一个单独的、普通的C类中(演示者),您现在也可以针对该类编写单元测试 您可以在此处找到有关ASP.NET和MVP的更多信息:
我不是说重新考虑所有代码以应用MVP,我只是建议尽可能地将业务逻辑移动到一个单独的类中,以MVP为指导进行测试。这是ASP.NET的一个重大设计缺陷,也是在ASP.NET MVC中开发许多新项目的原因。正如François Wahl所说,为了使您的项目更易于测试,您应该将尽可能多的业务逻辑转移到一个presenter类中,您可以对该类编写单元测试 要测试ASP.NET事件处理程序,您确实需要将测试的目标放在UI本身。这样的工具非常有用。它在客户机上运行,因此对服务器上运行的任何平台都是完全不可知的。它还附带一个Firefox插件,帮助您自动化测试用例。您可以使用类似 您可以通过以下方式测试asp.net代码
[Test]
public void ExampleTest()
{
IE ie = new IE("http://www.google.com");
ie.TextField(Find.ByName("q")).TypeText("WatiN");
ie.Button(Find.ByValue("Google Search")).Click();
Link link = ie.Link(Find.By("href", "http://watin.sourceforge.net/"));
Assert.That(link.Text == "WatiN Home");
}
要对业务类进行单元测试,可以使用Nunit和rhino Mock作为模拟框架
您可以在以下位置找到moq,这是您可以使用的其他模拟框架
对于UI测试,可以使用visual studio中的Selenium或codedUI测试。
对于项目结构,使用MVP或MVC作为框架,它将提供关注点分离,您可以使用NUNIT或其他单元测试框架测试您的模型逻辑。非常相似,应该证明是有用的。