您的位置:首页 > 其它

巧用CSI 进行dll或程序的简易单元测试

2016-09-09 00:36 197 查看
自从 Roslyn 面世已来,围绕.net的各种风声水起。到底它有何妙之处以至一石击起千层浪呢?首先咱们来来看它的主人微软是怎么说它的:“Compiler-as-a-Service”、”APIs”、“script”、“open source” 等等。

今天我要谈的是其中的一个小工具 CSI(Compiler Services Interactive) 的应用。这个小东东其实很好理解,就是C# Code AS Script ,即把命令行输入的内容当作C# 脚本进行动态编译处理。因为有这一个功能,苦逼的BUG工程师终于有福利了,因为使用CSI可以很方便的让我们对做程序进行调试工作了,bug的复现也就容易很多了。下面是几个用CSI当测试工具使常用的几个技巧:

1. Roslyn 在哪里?

NuGet里,你只需要引入:Microsoft.Net.Compilers、Microsoft.CodeAnalysis就可以使用它了


2. 怎么用Roslyn进行调试?

对于WinForm程序,一般躲在
package/Microsoft.Net.Compilers{version?}/tools目录下
对于Web程序,一般生成后,bin/roslyn目录下


3. 怎么用?

双击csi.exe即可开始使用


4. 怎么加载程序集?

#r "程序集名称,如果不在当前目录,则使用相对路径或完整路径"
#load "添加.cs文件或程序集"
一般情况下#r 用来加载程序集 #load 用来加载文件


5. 怎么调试?

这个没有技巧,你就把它当作写单元测试来。如:


#r "E:\datasource\ihu.doctor\lib\Common.dll"
using Sinldo.Common.Extensions;
using static System.Console;

public static string FindString(string value, string search, out int index, out string[] parts)
{
parts = value.DefaultNumberSplit();
index = 0;
foreach (var part in parts)
{
if (part == search)
{
return part;
}
index++;
}
return null;
}

string val = "123,456,789,012,456,798,5689,5678,568,782,458,962";
int index;
string[] parts;
string result = FindString(val, "568", out index, out parts);

WriteLine(string.Join(",", parts));
WriteLine($"index:{index},value:{result}");


6. 简易输出?

想要简单直接打印结果内容,由其是一些复杂的结构,你可以输入要打印的变量,后面不要带“;”即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  .net 单元测试 roslyn
相关文章推荐