如何为 ASP.NET 中文件背后的代码中的方法编写 MSUnit /测试用例
本文关键字:方法 MSUnit 测试用例 代码 ASP NET 中文 背后 文件 | 更新日期: 2023-09-27 18:30:16
我有一个应用程序,我已经为服务层编写了MSUnit案例。我的问题是如何为 asp.net 文件中代码中的方法编写 MSUnit 案例。
还是有必要为 UI 层编写测试用例?
那会很难 - 这些设计方式不是为了易于测试。 ASP.NET MVC对此进行了改进。
但是,您应该保持代码隐藏非常精简,以便可以通过测试其他类来涵盖关键功能。
你可以
使用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"));
}
}
正如 Bojan Bjelic 所写,来自 ASP.NET 代码隐藏的类很难在 ASP.NET 环境之外实例化,因此很难测试。因此,我建议您检查模型-视图-演示器模式,尤其是其被动视图变体。
这个想法是将所有逻辑从代码隐藏文件移动到一个表示器类中,该类是一个易于实例化且不依赖于平台的 POCO。然后,该演示器将很容易测试。代码隐藏代码将非常"虚拟",正如名称"被动视图"所暗示的那样。
下面是WinForms的示例,但该模式适用于 ASP.Net 甚至Android Java。
您可以非常快速地测试这些演示者,前提是测试编写正确。典型的测试需要几分之一秒。
我在这里找到了一个很好的例子(在页面底部查看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 });