如何进行单元测试.NET Web窗体

本文关键字:Web 窗体 NET 单元测试 何进行 | 更新日期: 2023-09-27 18:12:41

我有一个asp.net应用程序,你上传一个xml文件使用fileupload控件,它被解析成一个对象列表,并显示在一个网格视图非常简单的东西。但是我被要求写一些单元测试。我是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);      
    }
}

如何进行单元测试.NET Web窗体

是否有方法对fileupload进行单元测试

嗯,你绝对不能单元测试事件处理程序和其他超出ASP.NET的东西,就像你的FileUpload控件一样。此外,您不需要为文件上传控制编写单元测试,而只需检查主逻辑的阳性/阴性情况。是的,您可以很好地将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 A unit testing Walkthrough with Visual Studio Team Test中阅读更多关于单元测试的信息