繁体   English   中英

如何单元测试ASP.NET Web窗体

[英]How to unit test ASP.NET Web Forms

我有一个asp.net应用程序,你使用fileupload控件上传一个xml文件,它被解析成一个对象列表,并在网格视图中显示非常简单的东西。 但我被要求写一些单元测试。 我是tdd的新手,想了解如何编写一些单元测试的建议。

这就是我到目前为止所拥有的。 我对xml文件进行了硬编码。 有没有办法对fileupload进行单元测试

[TestClass]
public class UnitTest1
{

     string source = @"C:\Users\\Desktop\Web Application\ Web Application.Tests\LunchTest.xml";


    [TestMethod]
    public void ParseXmlTest()
    {
        XmlUlitilyClass x = new XmlUlitilyClass();

        Assert.AreEqual(x.ParseXml(source).Count, 4);
        Assert.AreEqual(x.ParseXml(source)[3].Name,"Roast of the day");
        Assert.AreEqual(x.ParseXml(source)[3].DesertIncluded, true);
        Assert.AreEqual(x.ParseXml(source)[0].Calories, 350);
        Assert.AreEqual(x.ParseXml(source)[1].Vegetarian, false);      
    }
}

有没有办法对fileupload进行单元测试

好吧,你绝对不能单独测试ASP.NET的事件处理程序和其他绑定内容,就像在你的情况下FileUpload控件一样。 此外,您不需要为fileupload控件编写单元测试,而只需检查主逻辑的postivie / negative案例。 是的,你可以很好地将xml文件名硬编码。 根据你的帖子我看到的是,这里的主要业务逻辑是:

  1. 单元测试文件处理逻辑。 这是测试错误的文件(或)不存在的文件输入的情况。 您可以为+ ve / -ve情况创建单独的单元测试方法,您可以在其中提供单独的硬编码文件输入。

  2. XML解析逻辑。

您可以考虑重构代码并将这两个逻辑放在单独的方法中,然后对这些方法进行单元测试。

根据您的评论,如果您提供错误的文件名,那么运行时肯定会抛出一个名为FileNotFoundException您可以使用ExpectedException属性在测试方法中捕获它。 例:

string source = @"C:\Users\\Desktop\Web Application\ Web Application.Tests\LunchTest.xml";

[TestMethod]
[ExpectedException(typeof(FileNotFoundException),
    "Provided File doesn't exists.")]
public void TestFileNotExists()
{
   //your code goes here
}

阅读有关MSDN中单元测试的更多信息使用Visual Studio Team Test进行单元测试演练

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM