【问题标题】:Is it possible to run .NET Core XUnit project as a standalone app?是否可以将 .NET Core XUnit 项目作为独立应用程序运行?
【发布时间】:2019-01-29 05:19:42
【问题描述】:

我的情况是我不想依赖环境中安装的 dotnet 版本。理想情况下,我希望有一个独立的 XUnit 应用程序,我可以使用它在目标环境中运行测试。

.NET Core 控制台应用程序有一个 OutputTypeExe ,因此在作为独立发布后,我们可以执行发布的可执行文件。这是可以理解的,因为控制台应用程序在应用程序中有一个入口点。在 XUnit 测试项目的情况下,我们没有入口点。

只是将<OutputType>Exe</OutputType> 添加到 XUnit 测试项目并没有帮助(可以理解)

【问题讨论】:

    标签: .net-core xunit


    【解决方案1】:

    我可以通过以下方式实现:

    • 在我要运行的 XUnit 测试项目中,将 .csproj 修改为:

    ```

      <PropertyGroup>
        <TargetFramework>netcoreapp2.1</TargetFramework>
        <OutputType>Exe</OutputType>
        <IsPackable>false</IsPackable>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="xunit" Version="2.3.1" />
        <PackageReference Include="xunit.runner.utility" Version="2.3.1" />
      </ItemGroup>
    
    </Project>
    

    ```

    • 包括此处提到的 Runner(请注意,这确实有一个入口点):https://github.com/xunit/samples.xunit/blob/master/TestRunner/Program.cs

    • 现在将应用程序发布为独立应用程序。例如,我想在 Linux 机器上运行用 .NET Core 编写的测试。示例:dotnet publish -c Release -r linux-x64

    • 现在假设您的测试项目被命名为“Foo.Tests”,您应该在发布的输出中看到一个名为“Foo.Tests”的可执行文件。执行 './Foo.Tests'

    【讨论】:

    • 我发现了一个类似的更简单的方法,我在一个类似的问题中发布了一个答案,关于在没有安装 sdk 的情况下运行:stackoverflow.com/a/64888158/2118268 虽然我还没有尝试过使用独立应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    相关资源
    最近更新 更多