首页 > 解决方案 > 使用 excel 文件运行数据驱动测试 (MSTest) 的问题

问题描述

作为 Visual Studio 2019 Professional 的一部分,我在 MSTest 框架下用 c# 编写了以下数据驱动的测试代码。第一种方法使用 csv 文件,第二种方法使用 excel 文件作为数据源。

using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;


namespace MyTest
{
[TestClass]
public class UnitTest1
{
    private TestContext context;

    public TestContext TestContext
    {
        get { return context; }
        set { context = value; }
    }

    [DataTestMethod]
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", @"|DataDirectory|\data\data.csv", "data#csv", DataAccessMethod.Sequential)]
    public void MyTestMethod1()
    {
        Assert.AreEqual(context.DataRow["Val1"], context.DataRow["Val2"]);
    }

    [DataTestMethod]
    [DeploymentItem(@"|DataDirectory|\data\data.xlsx")]
    [DataSource("System.Data.Odbc", @"Dsn=Excel Files;dbq=|DataDirectory|\data\data.xlsx;driverid=790;maxbuffersize=2048;pagetimeout=5", "Sheet1$", DataAccessMethod.Sequential)]

    public void MyTestMethod2()
    {
        Assert.AreEqual(Convert.ToInt16(context.DataRow["Val1"]), Convert.ToInt16(context.DataRow["Val2"]));
    }
}

}

csv和excel文件中的数据很简单,如下所示:

Val1,Val2
1,1
2,2
3,3
4,4
5,5

奇怪的问题是,当我通过在 Visual Studio 的测试资源管理器中选择测试文件并单击“运行测试”来运行两个测试时,第二个测试(使用 excel 数据源)将失败并显示错误消息:

单元测试适配器连接数据源或读取数据失败。有关解决此错误的详细信息,请参阅 MSDN 库中的“数据驱动单元测试故障排除”( http://go.microsoft.com/fwlink/?LinkId=62412 )。堆栈跟踪:TestDataSource.GetData(ITestMethod testMethodInfo, ITestContext testContext)

但是,如果我只运行此测试而不启动任何其他测试,那么它将按预期成功。这里有什么问题?任何人都可以请提出它的可能原因吗?

标签: excelvisual-studiounit-testingmstestdata-driven-tests

解决方案


推荐阅读