41

我正在尝试将解决方案从 TFS 2012 移动到 TFS 2018 SP2RC2,但我无法让单元测试正确运行。所有项目都重新定位到 4.7.1 并构建为 x86 平台。我们有一个 testsettings 文件,它只提供部署项。我正在使用新的 VSTest 平台安装程序任务(由 MS 指示)和 VS 测试任务。在测试运行开始时,我收到以下消息:

Test run will use DLL(s) built for framework .NETFramework,Version=v4.5 and platform X86. Following DLL(s) do not match framework/platform settings.

因此,所有测试都被跳过,因为它们的目标是 4.7.1。这个4.5设置来自哪里?我无法在任何地方找到它,也无法弄清楚如何更改它。

4

6 回答 6

12

/Framework:您可以为 VSTest 指定一个参数。

在您的情况下,您应该指定/Framework:.NETFramework,Version=v4.7.1

在https://msdn.microsoft.com/en-us/library/jj155796.aspx?f=255&mspperror=-2147217396上查看更多信息

于 2018-08-25T01:31:12.663 回答
4

我在 Visual Studio 中找到的解决方法比我想象的要容易得多:

  1. 退出所有VS实例
  2. 在 Windows 资源管理器中打开您的项目文件夹,找到 .vs 文件夹,将其删除
  3. 重新启动 VS,文件夹自行重建,测试再次工作。

显然,NUnit 插件在此文件夹中存储了一些设置,它们是二进制的,因此您无法编辑它们。这发生在我更新到 NUnit3TestAdapter 版本 3.17 后。

于 2020-09-15T19:30:01.433 回答
1

我在使用 Visual Studio 2019 时遇到了这个错误NUnit 3.12.0

测试运行将使用为框架 .NETFramework、Version=v4.5 和平台 X86 构建的 DLL。以下 DLL 与框架/平台设置不匹配。Project.UnitTests.dll 是为 Framework 4.5.2 和 Platform AnyCPU 构建的。

安装了 NUnit3TestAdapter 3.13.0,然后一切都开始工作了。不需要修改框架版本或 CPU 设置。

于 2019-07-28T09:39:07.020 回答
1

TLDR:如果您对测试项目使用 *.runsettings 文件,请尝试删除 TargetFrameworkVersion 节点

我有类似的问题,但使用 .Net Core

测试运行将使用为框架 .NETFramework、Version=v4.0 和平台 X64 构建的 DLL。以下 DLL 与框架/平台设置不匹配。MyProject.Tests.dll 是为 Framework .NETCoreApp,Version=v3.1 和 Platform AnyCPU 构建的。

原来还有另一个问题。对于我的其他 .NET Framework 测试项目,我定义了 *.runsettings 文件

选择运行设置文件

在这个文件中我有

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
    <!-- Parameters used by tests at runtime -->
    <TestRunParameters>
        <Parameter name="ConnectionString" value="Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=True" />
    </TestRunParameters>
    <RunConfiguration>
        <!-- Framework35 | [Framework40] | Framework45 | FrameworkCore10-->
        <TargetFrameworkVersion>Framework40</TargetFrameworkVersion>
    </RunConfiguration>
</RunSettings>

基于https://docs.microsoft.com/en-us/visualstudio/test/configure-unit-tests-by-using-a-dot-runsettings-file?view=vs-2019的 TargerFrameworkVersions 支持的值为 :

FrameworkCore10 用于 .NET Core 源,FrameworkUap10 用于基于 UWP 的源,Framework45 用于 .NET Framework 4.5 及更高版本,Framework40 用于 .NET Framework 4.0,Framework35 用于 .NET Framework 3.5。

但是对于 Core 3.1,FrameworkCore10 不起作用!

所以我完全删除了节点TargetFrameworkVersion

于 2020-10-13T11:42:52.073 回答
1

我在运行在另一台机器上开发的测试项目时遇到了麻烦,在该机器上没有可以使用 MSTest 测试运行程序运行的测试。除了您问题中的消息外,我还收到了以下消息:

确保测试发现者和执行者已注册并且平台和框架版本设置正确,然后重试。

发现测试完成:0 找到

在我的情况下,我通过卸载和更新 .csproj 文件来解决它,在根Project标签下直接添加以下导入。

<Import Project="..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props')" />

希望这个答案可以帮助您节省一些时间。

于 2019-06-27T06:59:00.330 回答
0

我在旧项目的 VS 2019 中遇到了同样的问题。

重新启动 Visual Studio 没有帮助,构建为 Release 然后重新构建为 Debug,也没有删除 .vs 文件夹。我做了这些事情,但仍然无法运行测试,每次在测试检测期间都会收到类似 OP 的消息。为了完整起见,我在这里提到这些。

我从解决方案资源管理器中删除了 LocalTestRun.testrunco​​nfig 文件和 *.vsmdi 文件,清理并重建了解决方案,单元测试再次运行。

于 2021-12-17T19:25:37.707 回答