dotnet-exec 0.27.0 Released

B站影视 日本电影 2025-03-31 09:02 1

摘要:dotnet-exec是一个 dotnet tool 一个命令行小工具,可以帮助我们方便地执行 C# 代码,可以用来运行一些简单的 C# 程序而无需创建项目文件,让 C# 像 python/nodejs 一样简单,而且可以自定义项目的入口方法,支持但不限于 M

Intro

dotnet-exec是一个 dotnet tool 一个命令行小工具,可以帮助我们方便地执行 C# 代码,可以用来运行一些简单的 C# 程序而无需创建项目文件,让 C# 像 python/nodejs 一样简单,而且可以自定义项目的入口方法,支持但不限于 Main 方法。

dotnet-exec0.27.0 发布了,新增了 xunit test case 的支持,可以执行某个 test case 文件

Installdotnet-exec是一个 dotnet tool,可以使用安装 dotnet tool 的命令来安装

安装/更新最新稳定版本:

dotnet tool update -g dotnet-execute

安装最新的 preview 版本:

dotnet tool update -g dotnet-execute --prerelease
执行dotnet-exec -h或者dotnet-exec --help即可看到一些使用说明

也可以通过 docker/podman 来在不安装 dotnet sdk 的情况下体验,例如:

docker run --rm --pull=always weihanli/dotnet-exec:0.27.0 "ApplicationHelper.RuntimeInfo"docker

如果在 GitHub Action 中使用又不想安装 dotnet-sdk 可以试试这个打包好的 github action

-name:dotnet-execscript
uses:WeihanLi/dotnet-exec-action@0.27.0
with:
script:"./build/build.cs"# script text or script path
options:"--web --debug"# optional
arguments:"target=test"# optional
Xunit test support

在 0.27.0 版本中新增了 test 命令,目前可以用它来跑 xunit 的 test case,使用方式如下:

dotnet-exec testResultTest.cs

也可以测试原始的 test case 代码,例如

dotnet-exec test"public class Tests { [Fact] public void Test1 { Assert.Equal(3, 1 + 2); } }"
如果 test case 有依赖其他项目或者 nuget 包引用,可以使用-r/--reference来添加引用(包含但不限于 NuGet 包引用)以及 -u/--using 添加命名空间引用dotnet-exec testResultTest.cs -r "nuget: WeihanLi.Common, 1.0.76"Implement

实现方式是基于 xunit.v3 来实现的,xunit.v3 的测试程序可以是一个 exe 程序,可以直接运行不需要借助额外的 test runner, 如之前的 vstest 和最近的 Microsoft Testing Platform,xunit.v3 内置了一个 test runner,测试项目在编译的时候会通过 MSBuild 生成一个入口方法,也就是生成一个 Main 方法来提供一个项目入口,具体的实现代码和项目配置有关系,下面是一个使用了 xunit v3 的一个单元测试项目的反编译示例

xunit-entrypointdotnet-exec的 test 命令就基于 InProcess 的 ConsoleRunner 来实现的,添加了 xunit.v3 的包引用和Xunit以及Xunit.v3命名空间,虽然是基于 xunit v3 来实现的,xunit v2 的 case 很多也是兼容的,当然对于不兼容的代码还是会有点问题的就没有办法执行了,暂时没有考虑兼容More

有看到有些朋友会使用 test case 来写一些示例,希望这一功能帮助更方便地执行 test case,可能会有一些小 bug,欢迎测试和反馈

References

来源:opendotnet

相关推荐