【问题标题】:SQL Server Unit Test in Visual Studio: Unable to set test condition properties due to "Object reference not set to an instance of an object." errorVisual Studio 中的 SQL Server 单元测试:由于“对象引用未设置为对象的实例”,无法设置测试条件属性。错误
【发布时间】:2021-02-01 09:04:50
【问题描述】:

我一直在 Visual Studio 中为 SQL Server Data Tools (SSDT) 项目试验单元测试。我在单元测试设计器中发现了一个我不知道如何调试或解决的问题。

背景:

在 Visual Studio 2019 中,我创建了一个 SSDT 项目并通过导入数据库来填充它。我发现创建能够运行 SQL Server 测试的单独单元测试项目的最简单方法是右键单击 SSDT 项目中的存储过程,然后选择 Create Unit Tests...,然后选择将单元测试添加到的选项一个新项目。

要向测试项目添加新的单元测试,我右键单击该项目,选择添加 > 新项目... > SQL Server > Sql Server 单元测试。

问题:

我试图在我的第一个 SQL Server 单元测试中添加一个标量值测试条件。当我尝试在“属性”窗口中设置预期值时,会出现一个错误对话框,提示“属性值无效”。详细消息是“对象引用未设置为对象的实例。”

我发现尝试在“属性”窗口中设置任何属性都会导致相同的错误。但是,没有任何迹象表明该对象是 null。

我已经能够通过在底层 C# 类中设置属性值来解决该问题,而不是使用“属性”窗口。如果我这样做,测试将成功运行。所以看来问题仅限于测试设计者。

问题不仅限于标量值测试条件。我也遇到了与行计数条件相同的问题 - 我无法在“属性”窗口中设置任何属性,因为每当我这样做时,错误对话框都会阻止我更改值。

有没有人遇到过类似的问题并找到了解决方法?

【问题讨论】:

    标签: sql-server visual-studio unit-testing sql-server-data-tools


    【解决方案1】:

    原来问题是由两个项目文件中的ToolsVersion 属性不匹配引起的:SSDT 项目和单元测试项目。

    我从这个 MSDN 线程中得到了 ToolsVersion 可能很重要的提示:https://social.msdn.microsoft.com/Forums/en-US/40abddf1-efd8-49cb-afe0-dc1aef6c1492/ssdt-unit-tests-vs2019-object-reference-not-set-to-an-instance-of-an-object?forum=vsunittest

    我在 Visual Studio 中卸载并编辑了每个项目。我可以看到 SSDT 项目的 ToolsVersion 是“4.0”,尽管它是在 Visual Studio 2019 中从头开始创建的,而从 SSDT 项目创建的单元测试项目的 ToolsVersion 是“15.0”。

    我将 SSDT 项目的 ToolsVersion 设置为“15.0”以匹配单元测试项目。

    一旦我重新加载了每个项目,我就可以使用测试设计器来设置测试条件属性而不会出错。

    为了清楚我在说什么,这里是 SSDT 项目文件的缩减版本。你可以在Project标签的顶部附近看到ToolsVersion属性:

    <?xml version="1.0" encoding="utf-8"?>
    <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="15.0">
      <PropertyGroup>
        <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
        <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
        <Name>SQlServerUnitTestingDemo</Name>
        ...
      </PropertyGroup>
      ...
    </Project>
    

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      相关资源
      最近更新 更多