当前位置: 首页 > 知识库问答 >
问题:

单元测试永远不会被发现

乜璞瑜
2023-03-14

我在Visual Studio 2017 Update 3预览版中有以下解决方案,它由作为NetStandard1.4的Xamarin.Forms项目和NetStandard1.4 dotnet Core Services.API项目以及NetStandard1.6 dotnet Core单元测试项目组成。

单元测试项目仅引用服务项目。csproj文件如下所示,其中添加了用于单元测试的MSTest框架。但问题是这些测试从未被发现。

<PropertyGroup>
    <TargetFramework>netstandard1.6</TargetFramework>
    <AssemblyName>FloatSink.Services.Api.Tests</AssemblyName>
    <RootNamespace>FloatSink.Services</RootNamespace>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <DebugType>full</DebugType>
    <DebugSymbols>True</DebugSymbols>
</PropertyGroup>

<ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0"></PackageReference>
    <PackageReference Include="Microsoft.TestPlatform.TestHost" Version="15.0.0" />
    <PackageReference Include="MSTest.TestAdapter" Version="1.1.17" />
    <PackageReference Include="MSTest.TestFramework" Version="1.1.17" />
</ItemGroup>

<ItemGroup>
    <ProjectReference Include="..\Services.API\Services.API.csproj" />
</ItemGroup>
[TestClass]
public class AppBuilderTests
{
    private const string DebugBuild = "Debug build";
    private const string ReleaseBuild = "Release build";

    /// <summary>
    /// Test that the ToString() method returns the string we sent into the constructor
    /// </summary>
    [TestMethod]
    public void ToStringReturnsStringFromCtor()
    {
        // Act
        var build = new AppBuild(DebugBuild);

        // Assert
        Assert.AreEqual(DebugBuild, build.ToString());
    }
}

最后,这是当我构建并从test Explorer(它是空的)中选择Run All时的测试输出。

[5/26/2017 6:38:23 PM Informational]-----开始加载播放列表------

[5/26/2017 6:38:23 PM Informational]===========加载播放列表完成(0:00:00.004501)============

[5/26/2017 6:38:24 PM Informational]------Discover测试开始-----

我将调试类型从Full更改为portable,我也在xUnit中尝试过这一点,但也遇到了同样的问题。所以这并不是MSTest特有的。

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

  <PropertyGroup>
    <TargetFramework>netstandard1.6</TargetFramework>
    <AssemblyName>FloatSink.Services.Api.Tests</AssemblyName>
    <RootNamespace>FloatSink.Services</RootNamespace>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <DebugType>portable</DebugType>
    <DebugSymbols>True</DebugSymbols>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
    <PackageReference Include="xunit" Version="2.2.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Services.API\Services.API.csproj" />
  </ItemGroup>

</Project>

共有1个答案

诸葛康胜
2023-03-14

问题是您的targetframework被设置为.NET标准版本。

尽管测试项目看起来像库,但它们具有更多可运行输出的特征--15.0.0测试sdk甚至将输出类型更改为exe以触发运行测试所需的资产的生成。(在2.0/15.3.0中,这将更改为新的HasRuntimeOutput属性)。

这里的修复方法是将targetframework更改为net*netcoreapp*的某个版本,具体取决于您希望在哪个框架上运行测试。

 类似资料:
  • 问题内容: 看过很多论坛,但没有找到答案…简单的东西,用@PostLoad注释的方法永远不会被调用…通过@EntityListeners添加了侦听器,但问题仍然存在。我正在使用基于SessionFactory的配置。 问题答案: 当使用基于基础的配置时,EJB3 注释不起作用,后期加载方法将永远不会被调用。 使用Hibernate的Interceptor或事件或基于基本的配置。

  • 1)我的plist配置提供背景模式: 2) 在中,我有: 3) 我在委托中声明了协议。 4)我实现了以下方法,但它永远不会被触发。(只有当我用“XCode-”模拟获取时才有效 为什么?这是DP5测试错误吗?我应该雷达这个吗?

  • 我得到了一个具有多个EditText-字段的。当我尝试编辑其中一个-字段并单击虚拟键盘上的回车键时,焦点向下转移到下一个-字段,这是我不想发生的事情。我想提交我在第一个-字段中所做的更改,然后关闭键盘。我设法通过在我的. xml文件中添加以下内容来关闭这个焦点转移: 但问题仍然存在,现在更改从未提交,因为我的侦听器从未被调用。如果我在我的中删除除一个项目之外的所有项目,一切都会正常工作。我的中也有

  • 我正在使用xUnit(1.9.2.version)ReSharper xUnit。net测试支持ReSharper 9对ReSharper的扩展 由于某些原因,ReSharper单元测试运行程序不会发现所有现有的单元测试,而测试资源管理器会发现。所有测试类都标记为公共<有线索吗?

  • 问题内容: 我正在尝试在JPA中使用悲观锁定,而不是针对Postgres数据库使用Hibernate 3。我无法超时锁定-它似乎永远挂着。 这是一个例子: 据我了解,em2应该尝试长达五秒钟(5000毫秒)来获取锁,然后应该抛出异常。而是代码陷入僵局。 如果我在两个不同的线程中运行它,那么我会看到线程2(带有em2)在线程1(em1)释放它后立即获得了锁。因此锁定正在发生,只是永不超时。 我用PE

  • 我曾经在这个项目中独自工作,该项目使用与visual studio team Foundation集成的源代码管理git。visual studio无法发现单元测试的问题是在项目中出现新元素以及需要通过源代码管理联机重新创建解决方案时开始的。在此之前,所有测试总是由visual Studio发现的。 为了创建单元测试,我使用dll Microsoft.VisualStudio.QualityToo