使用 dotnet CLI 在 VScode 中测试 .net4.8

问题描述 投票:0回答:2

我正在尝试将使用 Visual Studio 生成的旧的非 SDK 样式 mstest 项目转换为仅使用 Visual Studio Code 的新 SDK 样式项目。

我阅读并遵循了这个小操作方法,但这仅适用于 .NET core 及更新版本;不适用于 .NET 框架。

我需要我的项目同时针对这两个目标。如果我这样做

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>net48;netcoreapp3.1;net5.0;net6.0</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup Condition="'$(TargetFramework)' == 'net48'">
    <PackageReference Include="Microsoft.VisualStudio.UnitTesting" Version="11.0.50727.1" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetFramework)' != 'net48'">
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
    <PackageReference Include="MSTest.TestAdapter" Version="2.2.7" />
    <PackageReference Include="MSTest.TestFramework" Version="2.2.7" />
    <PackageReference Include="coverlet.collector" Version="3.1.0" />
  </ItemGroup>

</Project>

并添加一些像这样的测试

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace MyTests {

    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestTwoPlusTwoIsFour()
        {
            Assert.IsTrue(2 + 2 == 4);
        }
    }

}

并在我的

dotnet test
上运行
csproj
,然后仅对
netcoreapp3.1
net5.0
net6.0
进行测试。
net48
不会出现在我的控制台输出中的任何位置。

我需要做什么才能测试所有四个框架?

.net unit-testing visual-studio-code mstest dotnet-cli
2个回答
3
投票

似乎我不能使用

dotnet test
,但需要
msbuild
。 (感谢您的评论,@Heinzi。)

我可以像这样运行它:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\mstest.exe" /testcontainer:"$(MSBuildProjectDirectory)\$(OutputPath)$(ProjectName).dll"

如果这可以以某种方式合并到我的

dotnet test
通话中,那就太好了,这样我就不需要两次通话了...


0
投票
它适用于我使用 .NET SDK 8.0.403 中的

dotnet

 命令和具有较新 MSTest 版本的测试项目。
似乎他们在某个时候增加了对此的支持。

注意:您还可以引用 NuGet 元包

MSTest

 而不是单个包。

<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net48</TargetFramework> <OutputType>Library</OutputType> </PropertyGroup> <ItemGroup> <PackageReference Include="MSTest"> <Version>3.6.1</Version> </PackageReference> </ItemGroup> </Project>
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net48</TargetFramework>
    <OutputType>Library</OutputType>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="MSTest">
      <Version>3.6.1</Version>
    </PackageReference>
    <PackageReference Include="MSTest.TestFramework">
      <Version>3.6.1</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.NET.Test.Sdk">
      <Version>17.11.1</Version>
    </PackageReference>
  </ItemGroup>
</Project>
    
© www.soinside.com 2019 - 2024. All rights reserved.