基于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. .NET Core 在其上下文中,该请求的地址无效。

    .NET Core 在其上下文中,该请求的地址无效. 看了端口,发现没被占用,后来发现是IP地址变了 改成正确的IP就可以了.

  2. WebService autoconfigure.web.servlet.DispatcherServletPath

    SpringBoot WebService 源代码:https://gitee.com/VipSoft/VipWebService SpringBoot 整合 WebService cxf 报错 Co ...

  3. 使用port-forward本地访问k8s集群内redis

    前言 通过kubectl port-forward端口转发,在本地机器上访问k8s集群内的服务/数据库,对开发.调试.定位bug都很有用. 每次都要查,这里记录一下. 步骤 当然首先要确保本地机器上安 ...

  4. 深入浅出 WebRTC AEC(声学回声消除)

    前言:近年来,音视频会议产品提升着工作协同的效率,在线教育产品突破着传统教育形式的种种限制,娱乐互动直播产品丰富着生活社交的多样性,背后都离不开音视频通信技术的优化与创新,其中音频信息内容传递的流畅性 ...

  5. L2-029 特立独行的幸福 (25分) (简单循环 + 素数筛)

    对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68, ...

  6. 共享内存原理与VCS监控采集实战

    作者:cluo 一.前言 共享内存广泛用于Redis,Kafka,RabbitMQ 等高性能组件中,本文主要提供一个共享内存在广告埋点数据采集的实战场景. 二.共享内存原理 1.原理 在Linux中, ...

  7. 工作中使用Redis的10种场景

    前言 Redis作为一种优秀的基于key/value的缓存,有非常不错的性能和稳定性,无论是在工作中,还是面试中,都经常会出现. 今天这篇文章就跟大家一起聊聊,我在实际工作中使用Redis的10种场景 ...

  8. 深入理解dom加载过程

  9. java基础-构建工具mvn-day20

    目录 1. 初识mvn 2. 用maven创建工程 3. maven工程 之间的关系 4. 父子 mvn工程 5. mvn常见的插件 6. tomcat插件 1. 初识mvn mvn是一个项目构建工具 ...

  10. DC - 设计和工艺数据

    环境建立命令与变量 综合主要的三部分:RTL\目标工艺库\约束文件 DC综合过程中timing > area,在时序满足的条件下进行面积优化 RTL一般会映射为standcell(与非门),需要 ...