5

我有一些在 Visual Studio 2010 中运行良好的数据驱动单元测试。这些测试是使用以下模式实现的。

[TestMethod()]
[DeploymentItem("path_to_data_dir_relative_to_solution\\my_data.xml")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\my_data.xml", "Token", DataAccessMethod.Sequential)]
public void MyTestMethod()
{
    // Arrange
    const string EXPECTED_PARAM_NAME = "table";
    string data = TestContext.DataRow["Data"].ToString();
    var sut = new MyClassUnderTest();

    // Act
    sut.DoSomething(data);

    // Assert
    Assert.IsTrue(sut.DidSomething);
}

这是我的解决方案结构。

  • 我的解决方案文件夹
    • 我的测试项目文件夹
    • 我的测试数据文件夹
      • my_data.xml

当我在 Visual Studio 2012 中运行相同的测试时,它们会失败并显示以下错误消息。

结果消息:单元测试适配器未能连接到数据源或读取数据。有关解决此错误的详细信息,请参阅 MSDN 库中的“数据驱动单元测试故障排除”( http://go.microsoft.com/fwlink/?LinkId=62412 )。错误详细信息:对象引用未设置为对象的实例。

为什么我的单元测试突然失败了?

4

1 回答 1

8

在 Visual Studio 2010 中,DeploymentItem属性是相对于解决方案的,但在 Visual Studio 2012 中,它是相对于项目的。只需指定DeploymentItem相对于项目文件夹的路径,单元测试将再次开始工作。

有关更多信息,请参阅以下链接。

http://social.msdn.microsoft.com/Forums/en-US/vsunittest/thread/4a8403a2-b495-4120-aad3-0d0becc7e45e/

于 2013-04-15T22:30:34.760 回答