![](/img/trans.png)
[英]How to check in runtime if .NET Core app is started via dotnet cli
[英]Is it possible to install DotNet core CLI for dotnet core runtime?
我想在 docker 容器中运行功能测试。
Dotnet 核心运行时没有安装Dotnet CLI ,这意味着我无法调用命令 ' dotnet tests' 。
我想使用Dotnet 核心运行时映像,因为它更小,差异几乎是 1GB。
请注意,我在构建测试 dll 时没有问题,我之前在不同的映像中进行构建,然后将所有测试 DLL 文件放入运行时映像。 我只想运行那些测试 dll。
问题是:
是否可以为 .Net 运行时安装 Dotnet Cli? 我知道应该有 API 和 DLL 以及假设支持 cli 命令的类。 但也许有一种方法可以将 CLI 的某些部分包含在所需的 dll 中。
有没有办法配置 .net 核心运行时以包含额外的类/dll(运行单元/功能测试所需?(我的功能测试是用 Nunit 编写的,这就是我提到单元测试的原因)
我在 MS 网站https://docs.microsoft.com/en-us/dotnet/core/run-time-config/上看不到任何有用的东西。 此外,此消息““本文适用于:✔️ .NET Core 1.x SDK ✔️ .NET Core 2.x SDK””在以下页面https://docs.microsoft.com/en-us/dotnet/core /tools/dotnet-test?tabs=netcore21 about dotnet test 命令意味着 dotnet test 命令只能在 Dotnet SDK 中访问。
提前感谢您的时间。
虽然我还没有找到原始问题的答案并且我仍然对答案感兴趣,但我找到了一个关于如何摆脱 SDK 并在 .net 核心运行时运行功能测试单元测试的变通解决方案。
以下博客对我帮助很大,基本上是相同的解决方案。
在 .net 运行时运行单元测试的步骤:
计划,我们需要做的:
1、我们需要摆脱对.net CLI(依赖SDK)的依赖。
2. 为了做到这一点,我们将我们的项目单元测试项目转换为控制台应用程序,允许以以下方式在运行时运行测试。
3. 使 Nunit 兼容命令行运行。
dotnet FunctionalTest.dll。
如何实现:
1. 打开您的 UnitTests.csproj 文件或 FuncTests.csproj 文件。 将以下属性添加到属性组。
<GenerateProgramFile> false </GenerateProgramFile>
因此,您生成的 *.csproj 文件可能如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<IsPackable>false</IsPackable>
<GenerateProgramFile>false</GenerateProgramFile>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
<PackageReference Include="Nunit" Version="*" />
</ItemGroup>
</Project>
将 main 方法和 Progam.cs 添加到您的项目中。
class Program { public static int Main(string[] args) { return new AutoRun().Execute(args); } }
在 Visual Studio 中打开 NuGet 管理工具并安装 NUnitLite 包。
https://www.nuget.org/packages/NUnitLite/
现在您可以使用以下命令在 .net 运行时运行您的功能测试:
dotnet FunctionalTest.dll
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.