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

测试用例使用方法
- 双击从git拉取ILRuntime目录下的ILRuntime.sln
- 用VS或Rider打开后,对项目TestCases生成TestCases.dll
- 运行ILRuntimeTest项目会弹出上图的窗口,在LoadAssembly中加载之前生成的TestCases.dll
- 点击生成CLR绑定和适配器,如果无修改代码则只需要生成一次
- 从列表中选择需要运行的单元测试(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的更多相关文章
- Disable testSuite and testCase on some environment
def testEnv = context.expand('${#Project#testEnv}') String[] testCases = ["CheckEARouting(ADS)A ...
- 移除project,testsuite,testcase级别所有的custom properties
// Remove all custom properties on Project level. If removed, custom properties cannnot be injected ...
- Groovy解析xml并且注入Project,TestSuite,TestCase级别的custom properties
import com.eviware.soapui.support.GroovyUtils import groovy.util.XmlParser def groovyUtils = new Gro ...
- 写 test-case心得
最近,写ticket较多,由于每天有忙不完的工作加不完的班,心里逐渐有一个小人儿在抱怨了.此种情况下,慢慢的写case时边变得懒散,想钻空闲,于是便简简单单总结几个纲要便完事.提交test-case到 ...
- Maven pom.xml 配置说明: 打jar包不包括指定资源文件和.class xml,配置不跑testCase,建pom父子项目
**maven如何配置打jar包时,一些class 或者资源文件不打进来,把classpath的xml文件打进jar <build> <!--针对资源文件--> <res ...
- 如何使用不同参数组合生成独立的TestCase函数(Python)
在使用selenium2 Python做自动化测试的时候遇到个问题,写一个testcase 生成报告后,会有一个case的执行状态记录.这样我们写一个登录功能的自动化用例,只写一个case显然是不行的 ...
- soapUI 在多个测试套件 testsuite 里,多个testcase里传值如何实现
1.首先 要添加一个全局 自定义变量 Custom Properties 2.用transfer property 将取来的值 放入到变量 getToken 里 3.在另一个testc ...
- hadoop 1 testcase运行方法
转入hadoop2.0后,逐渐忘记了之前做testcase运行的方法,记录一下: ant -Dtestcase=Test*** 如果只运行core包得testcase可以 an ...
- 【十】注入框架RoboGuice使用:(Your First Testcase)
上一篇我们简单的介绍了一下RoboGuice的使用([九]注入框架RoboGuice使用:(Your First Injected Service and BroadcastReceiver)),今天 ...
- JUnit之TestCase和TestSuite详解
首先介绍下TestCase以及TestSuite. TestCase:字面意思,测试用例.为一个或多个方法提供测试方法.一般是一个test TestSuite:测试集合,即一组测试.一个t ...
随机推荐
- 火山引擎 DataLeap 通过中国信通院测评,数据管理能力获官方认可!
近日,火山引擎大数据研发治理套件 DataLeap 通过中国信通院第十五批"可信大数据"测评,在数据管理平台基础能力上获得认证. "可信大数据"产品能力 ...
- SQL Server 2016 自动备份、收缩数据库
一般策略为:Oracle: 周一.二 增量备份,周三差异备份,周四.五.六增量备份,周日完整备份(建多计划) MsSQL: 周一.六差异备份,周日完整备份(建多计划) 打开SQL server配置管理 ...
- 深入了解 ReadDirectoryChangesW 并应用其监控文件目录
简介 监视指定目录的更改,并将有关更改的信息打印到控制台,该功能的实现不仅可以在内核层,在应用层同样可以.程序中使用 ReadDirectoryChangesW 函数来监视目录中的更改,并使用 FIL ...
- 谣言粉碎机?Python验证股市操盘口诀
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 经常炒股的朋友,应该都听说过这段操盘口诀: 早上大跌要买,早上大涨要卖 下午大涨不追,下午大跌次日买 早 ...
- 0x61 图论-最短路
B题 Telephone Lines https://ac.nowcoder.com/acm/contest/1055/B 中文题面:https://www.luogu.com.cn/problem/ ...
- HashMap非线程安全到底有什么问题
HashMap是Java中常用的数据结构,用于存储键值对,并且提供了快速的查找和插入操作.下面挖掘一下HashMap内部的架构设计思维: 哈希函数的设计: HashMap使用哈希函数将键映射到数组索引 ...
- VS2019 16.8下载安装
昨天,想升级到 net5版本,发现在vs2019上始终发现不了它,考虑好几个小时,终于狠下心,把vs2019卸载了,重新装一次.耗费了一个晚上,先将安装过程写下来,以供参考 第一步, 到 微软官网 h ...
- MINGW64 禁用 Bash 路径参数转换
MINGW64 可以让 Windows 无缝使用 Linux 命令,但是路径参数会被转换为 Windows 风格.例如: $ ./adb shell ls /system ls: C:/Program ...
- Go 标准库之 io.Copy 和 ioutil.ReadAll
1. go 标准库之 io.Copy 和 ioutil.ReadAll 1.1 介绍 go 标准库中通过 ioutil.ReadAll 实现数据流的读取,io.Copy 实现数据流的读取和写入. 那两 ...
- 使用 Woodpecker 与 Gitea 搭建纯开源的 CI 流程|极限降本
最近开源了一个挂机冒险游戏<模拟龙生>,有热心同学不仅帮忙做优化,还连夜在给游戏加页面,泪目.详见文末小结部分. 一.前言 大家好,这里是白泽.这篇文章是<Woodpecker CI ...