编写数据驱动的单元测试的代码

更新:2007 年 11 月

如果某个单元测试具有数据驱动的单元测试要求的属性,则这个单元测试将用作数据驱动的测试。 通过使用“属性”窗口,或者通过直接将这些属性添加到测试代码中,可以指定这些属性并为它们赋值。

有关通过编辑单元测试的属性来将其配置为数据驱动的单元测试的更多信息,请参见 如何:配置数据驱动的单元测试

本主题介绍如何使用 DataSource 属性和 TestContext 类编写作为数据驱动的单元测试的单元测试。

使用数据源中的数据

在运行数据驱动的单元测试时,从数据源的行中检索数据。然后,通过 TestContext 类的 DataRow 和 DataConnection 属性将数据提供给正在运行的单元测试。

在下面的示例中,DataRow() 的类型为 DataRow,LastName 是以下行中某个有效列的名称,该行与数据驱动的测试的当前迭代关联。

TestContext.DataRow["LastName"]

尽管 LastName 按名称引用列,但是您也可以按列号引用列。

对于表中的每一行来说,可以访问任意数量的列。例如,您可以一次检索若干个列的数据,使用这些数据进行计算,然后将计算结果与包含期望返回值的最后一列进行比较。

编写数据驱动的单元测试的代码

若要创建一个数据驱动的单元测试,既可以从手动创建的单元测试开始,也可以从生成的单元测试入手。有关更多信息,请参见 如何:创作单元测试如何:生成单元测试

若要配置现有单元测试,请添加定义以下内容的属性:测试要使用的数据源、访问数据的方式以及要使用其中的行作为测试输入的数据表。有关配置这些属性的更多信息,请参见 如何:配置数据驱动的单元测试

例如,下面的代码就是来自于一个使用 Northwind 数据库中的数据的数据驱动的单元测试。

namespace TestProject1
{
    [TestClass]
    public class TestClass
    {
        private TestContext m_testContext;
        public TestContext TestContext
        {
            get { return m_testContext; }
            set { m_testContext = value; }
        }
        [TestMethod]
        [DeploymentItem("FPNWIND.MDB")]
        [DataSource("System.Data.OleDb", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"FPNWIND.MDB\"", "Employees", DataAccessMethod.Sequential)]
        public void TestMethod()
        {
            Console.WriteLine( "EmployeeID: {0}, LastName: {1}", TestContext.DataRow["EmployeeID"],  TestContext.DataRow["LastName"] );
        }
    }
}

在此示例中,测试方法中的代码使用的值来自于数据源的“Employees”表的 LastName 和 EmployeeID 列。测试方法通过 TestContext 属性访问这些值,该属性是在包含此方法的测试类中定义的。

请参见

任务

如何:创作单元测试

如何:配置数据驱动的单元测试

概念

单元测试的结构

参考

DataSourceAttribute

TryUrlRedirection

其他资源

如何:生成单元测试

数据驱动的单元测试概述