You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用F#、FsUnit与dotnet命令行执行dotnet test时提示无可用测试的问题

问题排查与解决方案

核心问题原因

  1. 项目类型错误:当前项目是Console类型(<OutputType>Exe</OutputType>),dotnet test默认不会扫描可执行文件中的测试用例,测试项目需设置为类库类型。
  2. 缺少测试适配器:未安装xunit测试发现器包,导致dotnet test无法识别标记了[Fact]的测试方法。

具体修复步骤

1. 修改项目配置文件

打开CustomerProject.fsproj,将<OutputType>Exe</OutputType>替换为<OutputType>Library</OutputType>,修改后的PropertyGroup如下:

<PropertyGroup>
  <OutputType>Library</OutputType>
  <TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

2. 添加xunit测试适配器包

在项目根目录执行命令:

dotnet add package xunit.runner.visualstudio

该包是xunit提供的测试发现器,负责让dotnet test识别并运行测试用例。

3. 移除冗余依赖(可选)

Microsoft.TestPlatform包无需单独安装,Microsoft.TestPlatform.TestHost和xunit.runner.visualstudio已包含所需依赖,可执行命令移除:

dotnet remove package Microsoft.TestPlatform

最终项目文件示例

修改后的.fsproj内容如下:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Library</OutputType>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="Customer.fs" />
    <Compile Include="CustomerTests.fs" />
  </ItemGroup>   
  <ItemGroup>
    <PackageReference Include="FsUnit" Version="5.0.5" />
    <PackageReference Include="FsUnit.Xunit" Version="5.0.5" />
    <PackageReference Include="Microsoft.TestPlatform.TestHost" Version="17.3.2" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.5" />
  </ItemGroup>    
</Project>

验证测试

执行dotnet test命令,此时应该能正常发现并运行你的测试用例。

注:F#项目的文件编译顺序需保证业务代码(Customer.fs)在测试代码(CustomerTests.fs)之前,当前配置已符合要求。

内容的提问来源于stack exchange,提问作者Knows Not Much

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:20:31