基于ILRuntime 1.6.3版本,在ILRuntime中提供测试用例,建议在下载ILRuntime之后先跑一遍官方的测试用例,对比自己使用ILRuntime的性能和官方数据是否一致

测试工具

测试工具预览

测试用例使用方法

  1. 双击从git拉取ILRuntime目录下的ILRuntime.sln
  2. 用VS或Rider打开后,对项目TestCases生成TestCases.dll
  3. 运行ILRuntimeTest项目会弹出上图的窗口,在LoadAssembly中加载之前生成的TestCases.dll
  4. 点击生成CLR绑定和适配器,如果无修改代码则只需要生成一次
  5. 从列表中选择需要运行的单元测试(RunSelect),可以选择RunAll运行所有用例

上图中两个按钮对应ILRuntime在Unity的菜单如下:

Binding: 通过自动分析热更DLL生成CLR绑定

CrossBind Gen: 生成跨域继承适配器

测试内容

整个测试用例包含这些内容,支持的C#语法,支持的C#特性

C#语法测试

用来测试ILRuntime中支持的C#语法,如果不支持的,会输出not support

涵盖的C#语法内容有:

struct interface Reflection Array
class override Inheritance RefOut
enum Delegate AsyncAwait JsonTest
try catch GenericMethod ActivatorCreateInstance ......

更多的测试用例可以查看下面的测试用例.txt

性能测试

用例中包含的性能部分并不算多,主要是运算符操作,代码在Test01.cs

TestCases.Test01.UnitTest_Performance2

TestCases.Test01.UnitTest_Performance

TestCases.Test01.UnitTest_Performance3

TestCases.Test01.UnitTest_Performance4

所有测试用例

我把官方的所有测试用例保存为一份txt,点击查看

注:对于sealed class,txt和用例中显示的是/,比如:TestCases.StaticTest/NormalClass.Create

通过反射获取所有的测试用例,代码如下:

var types = _app.LoadedTypes.Values.ToList();
foreach (var type in types)
{
var ilType = type as ILType;
if (ilType == null)
continue;
var methods = ilType.GetMethods();
foreach (var methodInfo in methods)
{
string fullName = ilType.FullName;
//目前只支持无参数,无返回值测试
if (methodInfo.ParameterCount == 0 && methodInfo.IsStatic && ((ILRuntime.CLR.Method.ILMethod)methodInfo).Definition.IsPublic)
{
var testUnit = new StaticTestUnit();
testUnit.Init(_app, fullName, methodInfo.Name);
_testUnitList.Add(testUnit);
}
}
}

ILRuntime的TestCase的更多相关文章

  1. Disable testSuite and testCase on some environment

    def testEnv = context.expand('${#Project#testEnv}') String[] testCases = ["CheckEARouting(ADS)A ...

  2. 移除project,testsuite,testcase级别所有的custom properties

    // Remove all custom properties on Project level. If removed, custom properties cannnot be injected ...

  3. Groovy解析xml并且注入Project,TestSuite,TestCase级别的custom properties

    import com.eviware.soapui.support.GroovyUtils import groovy.util.XmlParser def groovyUtils = new Gro ...

  4. 写 test-case心得

    最近,写ticket较多,由于每天有忙不完的工作加不完的班,心里逐渐有一个小人儿在抱怨了.此种情况下,慢慢的写case时边变得懒散,想钻空闲,于是便简简单单总结几个纲要便完事.提交test-case到 ...

  5. Maven pom.xml 配置说明: 打jar包不包括指定资源文件和.class xml,配置不跑testCase,建pom父子项目

    **maven如何配置打jar包时,一些class 或者资源文件不打进来,把classpath的xml文件打进jar <build> <!--针对资源文件--> <res ...

  6. 如何使用不同参数组合生成独立的TestCase函数(Python)

    在使用selenium2 Python做自动化测试的时候遇到个问题,写一个testcase 生成报告后,会有一个case的执行状态记录.这样我们写一个登录功能的自动化用例,只写一个case显然是不行的 ...

  7. soapUI 在多个测试套件 testsuite 里,多个testcase里传值如何实现

        1.首先 要添加一个全局 自定义变量 Custom Properties   2.用transfer property 将取来的值 放入到变量 getToken 里   3.在另一个testc ...

  8. hadoop 1 testcase运行方法

       转入hadoop2.0后,逐渐忘记了之前做testcase运行的方法,记录一下:    ant -Dtestcase=Test***    如果只运行core包得testcase可以    an ...

  9. 【十】注入框架RoboGuice使用:(Your First Testcase)

    上一篇我们简单的介绍了一下RoboGuice的使用([九]注入框架RoboGuice使用:(Your First Injected Service and BroadcastReceiver)),今天 ...

  10. JUnit之TestCase和TestSuite详解

    首先介绍下TestCase以及TestSuite.    TestCase:字面意思,测试用例.为一个或多个方法提供测试方法.一般是一个test    TestSuite:测试集合,即一组测试.一个t ...

随机推荐

  1. IDEA 报 Unable to import maven project: See logs for details

    用的apache-maven-3.6.2 报错,解决方法:降级成 apache-maven-3.6.1 版本 IDEA 报 Unable to import maven project: See lo ...

  2. Python中节省内存的方法之二:弱引用weakref

    弱引用和引用计数息息相关,在介绍弱引用之前首先简单介绍一下引用计数. 引用计数 Python语言有垃圾自动回收机制,所谓垃圾就是没有被引用的对象.垃圾回收主要使用引用计数来标记清除. 引用计数:pyt ...

  3. 神经网络优化篇:详解指数加权平均的偏差修正(Bias correction in exponentially weighted averages)

    指数加权平均的偏差修正 \({{v}_{t}}=\beta {{v}_{t-1}}+(1-\beta ){{\theta }_{t}}\) 在上一个博客中,这个(红色)曲线对应\(\beta\)的值为 ...

  4. 国内pip源提示“not a trusted or secure host”解决方案

    大家应该都知道怎么添加国内pip源(主要是豆瓣和阿里云),~/.pip/pip.conf文件配置大概如下(下面注释掉了豆瓣源): [global] # index-url = http://pypi. ...

  5. POJ 1011 Sticks​ (DFS + 剪枝)

    题目地址:http://poj.org/problem?id=1011 题目大意 给出n个小木棒,组合成若干长度最短棍子 解题思路 首先将木棒从大到小排序 dfs(k, l), k是还剩多少木棒没用, ...

  6. 【调试】kprobes(一)基本概念

    简介 开发人员在内核或者模块的调试过程中,往往会需要要知道其中的一些函数有无被调用.何时被调用.执行是否正确以及函数的入参和返回值是什么等等. 比较简单的做法是在内核代码对应的函数中添加日志打印信息, ...

  7. java基础(16)--super与this

    一.this简介 1.this.  this() 2.静态方法无法使用 3.不省略的情况:区分局部变量与实例变量,比如set方法中用到   二.super简介 1.只能出现在实例方法或构造方法中 2. ...

  8. 洛谷 P9683 A Certain Forbidden Index 题解

    题目链接:\(\color{Purple}\texttt{P9683 A Certain Forbidden Index}\). 填坑.提供一个相对好写的做法. 考虑把一堆不交的区间绑在一起问(即先询 ...

  9. 【SHELL】获取脚本输入参数

    参数获取 EXEC_PARAMS=(${@:index}) 示例 ./do.sh test a b c d e f EXEC_PARAMS=(${@:0}) ./do.sh test a b c d ...

  10. -- spi flash 擦除接口调用HAL库不同函数的区别

    [描述] 在使用STM32F429操作W25Q128时,为验证flash工作正常,做简单的读写数据校验,在擦除接口中使用 HAL_SPI_Transmit 方法一直工作异常,使用 HAL_SPI_Tr ...