单元测试CommandLineUtils中的命令

引言

使用CommandLineUtils可以创建便捷的dotnet tool工具,官方的docs / samples /中包含有很多示例;但是对于如何运行Command却没有明示,如果你要单元测试自己创建的命令,要到test目录下参考官方的单元测试代码,以下列出自己实践的方法.

解决办法

  • 对于不使用依赖注入的Command,直接使用CommandLineApplication.Execute<Show>("-a");即可,其中Show[Command("show", Description = "")]
  • 对于使用依赖注入的Command可以参考这个示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var commandLineApplication = new CommandLineApplication<Show>();
var services = new ServiceCollection()
.AddLogging()
.AddSingleton(Program.Configuration)
.AddSingleton(Program.Configuration.Get<APPConfig>())//添加依赖注入
.BuildServiceProvider();

commandLineApplication.Conventions
.UseDefaultConventions()
.UseConstructorInjection(services);

commandLineApplication.Parse();

var result = commandLineApplication.Execute(@"--path=/CUSTDB/1901-0048.rar", "--taskid=1907-7777");//执行命令

result.Should().Be(0);//using FluentAssertions

单元测试CommandLineUtils中的命令
http://blog.wangshuai.app/2020-04-6-单元测试CommandLineUtils中的命令/
作者
王帅
发布于
2020年4月6日
许可协议