XUnit 测试可以 运行 来自要测试的项目吗?

Can XUnit tests be run from within the project to be tested?

我想知道是否可以在与源代码相同的项目中进行 xUnit 测试?
我添加了 xUnit 引用,但是当我执行测试时,Visual Studio 告诉我该项目没有测试。我也尝试使用 Microsoft.NET.Test.Sdk,但在那种情况下会显示错误,因为该项目有两个入口点。

public class Test
{
    [Fact]
    public void TestMethod()
    {
    }
}

Implementation and better naming of the test will follow later...

要通过 xUnit Test 编译获得控制台应用程序有点棘手。实现此目的的一种方法是调整控制台 App csproj。

在 PropertyGroup 部分添加以下语句:

<GenerateProgramFile>false</GenerateProgramFile>

最终的 csproj 应如下所示:

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

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net5.0</TargetFramework>
        <GenerateProgramFile>false</GenerateProgramFile>
    </PropertyGroup>

  <ItemGroup>
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
        <PackageReference Include="xunit" Version="2.4.1" />
        <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
            <PrivateAssets>all</PrivateAssets>
            <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
        </PackageReference>
  </ItemGroup>

</Project>

有关此主题的进一步阅读,请参阅 Andrew Lock 的这篇有趣的博客 post:"Program has more than one entry point defined" for console apps containing xUnit tests