Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何对方法/事件进行单元测试_C#_Asp.net_Unit Testing_Nunit - Fatal编程技术网

C# 如何对方法/事件进行单元测试

C# 如何对方法/事件进行单元测试,c#,asp.net,unit-testing,nunit,C#,Asp.net,Unit Testing,Nunit,我需要为ASP.net应用程序进行单元测试。因为我从来没做过。我想知道我如何能为事件做测试点击等等。。。或者检查方法返回的内容 你有什么例子可以分享吗? 提前感谢您可能可以从阅读开始,如果它需要变得更特定于ASP.NET,可能是这样。您将发现很难针对代码隐藏文件编写单元测试,因为您最终会遇到依赖于HttpContext存在的方法/事件。HttpContext是一个不从接口本身继承的密封类。这使得嘲笑成为不可能 假设必须存在有效的HttpContext,例如,单元测试将抛出的重定向对象未初始化异常

我需要为ASP.net应用程序进行单元测试。因为我从来没做过。我想知道我如何能为事件做测试点击等等。。。或者检查方法返回的内容

你有什么例子可以分享吗?
提前感谢

您可能可以从阅读开始,如果它需要变得更特定于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或其他单元测试框架测试您的模型逻辑。

非常相似,应该证明是有用的。