我有一个应用程序,我已经为服务层编写了MSUnit案例。我的问题是如何为asp.net中文件后面的代码编写MSUnit案例。
或者是否有必要为UI层编写测试用例?
答案 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 });