如何为ASP.NET中的文件后面的代码中的方法编写MSUnit / Test案例

时间:2014-11-12 12:57:25

标签: c# asp.net unit-testing

我有一个应用程序,我已经为服务层编写了MSUnit案例。我的问题是如何为asp.net中文件后面的代码编写MSUnit案例。

或者是否有必要为UI层编写测试用例?

4 个答案:

答案 0 :(得分:1)

这很难 - 这些设计的方式不容易测试。 ASP.NET MVC对此进行了改进。

但是,你应该保持代码隐藏非常薄,所以你可以通过测试其他类来覆盖关键功能。

答案 1 :(得分:1)

您可以使用WatiN(http://watin.org/),它就是为此而构建的。 从他们的页面:

[Test] 
public void SearchForWatiNOnGoogle()
{
  using (var browser = new IE("http://www.google.com"))
  {
    browser.TextField(Find.ByName("q")).TypeText("WatiN");
    browser.Button(Find.ByName("btnG")).Click();

    Assert.IsTrue(browser.ContainsText("WatiN"));
  }
}

答案 2 :(得分:0)

正如Bojan Bjelic所写,ASP.NET代码隐藏的类很难在ASP.NET环境之外实例化,因此难以测试。因此,我建议您检查模型 - 视图 - 展示器模式,尤其是其被动视图变体。

我们的想法是将所有逻辑从代码隐藏文件转移到Presenter类中,该类是一个易于实例化且不依赖于平台的POCO。那个演示者将很容易测试。代码隐藏代码将很漂亮"虚拟",作为名称"被动视图"建议。

Here is an example适用于WinForms,但该模式适用于ASP.Net,甚至适用于Android Java。

考虑到测试的正确编写,您可以非常快速地测试这些演示者。典型的测试只需要几分之一秒。

答案 3 :(得分:0)

我在这里(Calling a private function from another class in C#)找到了一个很好的例子(在页面底部查看Codor的答案)

并能够在我的代码中使用它来调用后面代码中的私有函数进行测试。

 //page 
//include a using at the top Project.Folder where page is located
PageName pageObject = new PageName();

//public function
ReturnType returnPublicObject = pageObject.METHOD_NAME(comma, separated, args);

//private function
ReturnType returnPrivateObject= (ReturnType)pageObject.GetType()
           .GetMethod("METHOD_Name", 
           BindingFlags.NonPublic | BindingFlags.Instance)
           .Invoke(pageObject, new object[] { comma, separated, args });