SQL Visual Studio 中的服务器单元测试:由于 "Object reference not set to an instance of an object." 错误,无法设置测试条件属性
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." error
我一直在 Visual Studio 中为 SQL 服务器数据工具 (SSDT) 项目试验单元测试。我在单元测试设计器中发现了一个我不知道如何调试或解决的问题。
背景:
2019 年 Visual Studio 我创建了一个 SSDT 项目并通过导入数据库填充它。我发现创建能够进行 运行 SQL 服务器测试的单独单元测试项目的最简单方法是右键单击 SSDT 项目中的存储过程,然后 select 创建单元测试。 ., 然后 select 将单元测试添加到新项目的选项。
要向测试项目添加新的单元测试,我右键单击该项目,select 添加 > 新项目... > SQL 服务器 > Sql 服务器单元测试。
问题:
我试图将标量值测试条件添加到我的第一个 SQL 服务器单元测试中。当我尝试在属性 window 中设置预期值时,出现一个错误对话框,显示“属性 值无效”。详细消息是“对象引用未设置到对象的实例。”
我发现尝试在属性 window 中设置任何 属性 都会导致相同的错误。但是,没有迹象表明该对象是空的。
我已经能够通过在底层 C# class 中设置 属性 值而不是使用属性 window 来解决这个问题。如果我这样做,测试将成功运行。所以看来问题仅限于测试设计者。
问题不仅限于标量值测试条件。我 运行 也遇到了与行计数条件相同的问题 - 我无法在属性 window 中设置任何 属性 因为每当我执行错误对话框时都会阻止我更改值.
有没有人遇到过类似的问题并找到了解决方法?
原来问题是由两个项目文件中的 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>
我一直在 Visual Studio 中为 SQL 服务器数据工具 (SSDT) 项目试验单元测试。我在单元测试设计器中发现了一个我不知道如何调试或解决的问题。
背景:
2019 年 Visual Studio 我创建了一个 SSDT 项目并通过导入数据库填充它。我发现创建能够进行 运行 SQL 服务器测试的单独单元测试项目的最简单方法是右键单击 SSDT 项目中的存储过程,然后 select 创建单元测试。 ., 然后 select 将单元测试添加到新项目的选项。
要向测试项目添加新的单元测试,我右键单击该项目,select 添加 > 新项目... > SQL 服务器 > Sql 服务器单元测试。
问题:
我试图将标量值测试条件添加到我的第一个 SQL 服务器单元测试中。当我尝试在属性 window 中设置预期值时,出现一个错误对话框,显示“属性 值无效”。详细消息是“对象引用未设置到对象的实例。”
我发现尝试在属性 window 中设置任何 属性 都会导致相同的错误。但是,没有迹象表明该对象是空的。
我已经能够通过在底层 C# class 中设置 属性 值而不是使用属性 window 来解决这个问题。如果我这样做,测试将成功运行。所以看来问题仅限于测试设计者。
问题不仅限于标量值测试条件。我 运行 也遇到了与行计数条件相同的问题 - 我无法在属性 window 中设置任何 属性 因为每当我执行错误对话框时都会阻止我更改值.
有没有人遇到过类似的问题并找到了解决方法?
原来问题是由两个项目文件中的 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>