CN111008153A - 一种单元测试方法及系统 - Google Patents
一种单元测试方法及系统 Download PDFInfo
- Publication number
- CN111008153A CN111008153A CN201911385923.2A CN201911385923A CN111008153A CN 111008153 A CN111008153 A CN 111008153A CN 201911385923 A CN201911385923 A CN 201911385923A CN 111008153 A CN111008153 A CN 111008153A
- Authority
- CN
- China
- Prior art keywords
- private
- test
- unit
- reflection
- test case
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种单元测试方法及系统,属于软件单元测试技术领域,包括:查找原测试用例所在的测试文件,并在测试文件头部添加反射的命名空间的引用;利用反射访问私有成员或私有函数,编写新的测试用例;根据新的测试用例,执行单元测试代码,生成测试报告。通过利用C#反射查看和调用程序集的类和方法,利用反射动态创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型并调用其方法或者访问其字段和属性来编写单元测试用例,以达到单元测试覆盖率要求。
Description
技术领域
本发明涉及软件单元测试技术领域,特别涉及一种单元测试方法及系统。
背景技术
在VS2012中在做C#单元测试时,对于修改测试用例以满足测试覆盖率的原则是:对于执行路径要求对模块中每一个独立的路径进行测试;模块中每条语句至少执行一次即满足每一个分支都至少被覆盖一次。
但是当被测函数中存在访问私有成员字段的语句,或者是本身是私有函数时,因为受保护级限制,不能访问,就无法直接去修改测试用例中的方法的参数值,无法满足测试代码的覆盖率要求,然而为了保证代码的有效性,单元测试又必不可少。
发明内容
本发明的目的在于克服现有技术存在的缺陷,以实现对含有私有成员函数或私有函数的单元测试。
为实现以上目的,本发明采用一种单元测试方法,用于对含有私有成员的函数或私有函数进行单元测试,包括如下步骤:
查找原测试用例所在的测试文件,并在测试文件头部添加反射的命名空间的引用;
利用反射访问私有成员或私有函数,编写新的测试用例;
根据新的测试用例,执行单元测试代码,生成测试报告。
进一步地,在对含有私有成员的函数进行单元测试时,所述利用反射访问私有成员,编写新的测试用例,包括:
查找所述原测试用例,并实例化被测类;
通过反射获取类中的私有字段,以在测试文件中修改原测试用例,并编写所述新的测试用例。
进一步地,所述通过反射方法获取类中的私有字段,以在测试文件中修改原测试用例,并编写所述新的测试用例,包括:
获取所述被测类类型关联的Type对象 t;
利用反射的FieldInfo,发现字段属性并提供对字段元数据的访问权,通过Type对象t,获取所述被测类中的私有字段;
利用FieldInfo类的SetValue方法,设置所述被测类中的私有字段的值,并完成测试用例编写。
进一步地,在对私有函数进行单元测试时,所述利用反射方法访问私有函数,编写新的测试用例,包括:
在所述测试文件中添加所述私有函数的测试用例,并实例化被测类;
通过反射方法获取被测类中的私有函数,并编写所述新的测试用例。
进一步地,所述通过反射方法获取被测类中的私有函数,并编写所述新的测试用例,包括:
获取所述被测类类型关联的Type对象 t;
利用反射的MethodInfo,发现方法的属性并提供对方法元数据的访问,通过Type对象t,访问所述被测类中的私有函数;
初始化私有函数的参数;
利用MethodInfo类的Invoke方法将所述被测类对象名称和私有方法参数(此处的“私有方法参数”指的是一个对象数组,这些对象与调用的私有函数的参数具有相同的数量、顺序和类型;如果该私有函数是无参的,应为null。)传给Invoke方法,来调用所述私有函数,并编写所述新的测试用例。
进一步地,在所述私有方法中包含ref或out参数或者函数有返回值时,还包括:
将所述初始化后的私有方法的参数封装进object数组中;
初始化object数组,并调用私有方法查看调用后的参数值或函数的返回值。
另一方面,采用一种单元测试系统,用于对含有私有成员的函数或私有函数进行单元测试,包括查找模块、反射调用模块和测试模块:
查找模块用于查找原测试用例所在的测试文件,并在测试文件头部添加反射的命名空间的引用;
反射调用模块用于利用反射方法访问私有成员或私有函数,编写新的测试用例;
测试模块用于根据新的测试用例,执行单元测试代码,生成测试报告。
进一步地,在对含有私有成员的函数进行单元测试时,所述反射调用模块包括查找单元和第一反射调用单元;
查找单元用于查找所述原测试用例,并实例化被测类;
第一反射调用单元用于通过反射方法获取类中的私有字段,以在测试文件中修改原测试用例,并编写所述新的测试用例。
进一步地,所述第一反射调用单元包括第一获取子单元、第一反射调用子单元、私有字段值获取子单元和私有字段值设置子单元;
第一获取子单元用于获取所述被测类类型关联的Type对象 t;
第一反射调用子单元用于利用反射机制的FieldInfo,发现字段属性并提供对字段元数据的访问权,通过Type对象 t,获取所述被测类中的私有字段;
私有字段值设置子单元用于利用FieldInfo类的SetValue方法,设置所述被测类中的私有字段的值,并完成测试用例编写。
进一步地,在对私有函数进行单元测试时,所述反射调用模块包括添加单元和第二反射调用单元;
添加单元用于在所述测试文件中添加所述私有函数的测试用例,并实例化被测类;
第二反射调用单元用于通过反射方法获取被测类中的私有函数,并编写所述新的测试用例。
与现有技术相比,本发明存在以下技术效果:本发明通过利用C#反射查看和调用程序集的类和方法,利用反射动态创建类型的实例,将类型绑定到现有对象或从现有对象中获取类型并调用其方法或者访问其字段和属性(利用反射调用方法)来编写单元测试用例,以达到单元测试覆盖率要求,保证代码质量。
附图说明
下面结合附图,对本发明的具体实施方式进行详细描述:
图1是一种单元测试方法的流程示意图;
图2是编写含有私有成员函数的测试用例的步骤示意图;
图3是编写私有函数的测试用例的步骤示意图;
图4是传统的测试用例运行后的代码覆盖率展示图;
图5是所编写的含有私有成员函数的测试用例运行后的代码覆盖率展示图;
图6是所诉编写私有函数的测试用例运行后的代码覆盖率展示图;
图7是一种单元测试系统的结构示意图。
具体实施方式
为了更进一步说明本发明的特征,请参阅以下有关本发明的详细说明与附图。所附图仅供参考与说明之用,并非用来对本发明的保护范围加以限制。
如图1所示,本实施例公开了一种单元测试方法,用于对含有私有成员的函数或私有函数进行单元测试,包括如下步骤S1至S3:
S1、查找原测试用例所在的测试文件,并在测试文件头部添加反射的命名空间的引用;
S2、利用反射访问私有成员或私有函数,编写新的测试用例;
S3、根据新的测试用例,执行单元测试代码,生成测试报告。
具体地,如图2所示,在对含有私有成员的函数进行单元测试时,上述步骤S2:利用反射调用方法访问私有成员,编写新的测试用例,包括如下细分步骤:
S21、查找所述原测试用例,并实例化被测类;
S22、通过反射获取类中的私有字段,以在测试文件中修改原测试用例,并编写所述新的测试用例。
具体过程如下:
利用“Type t=typeof(classname);”或者“Type t= target.GetType();”获取classname类型关联的Type对象t(classname为被测类名)。
利用FieldInfo fi=t.GetField(“字段名”,BindingFlags.NonPublic ) ,通过Type对象t,获取类中的字段,“字段名”为要访问的私有字段名称,BindingFlags.NonPublic 为GetField的查询范围,意思是从非公共成员中寻找,如若需要访问的字段为private static类型,需增加查询范围为BindingFlags.NonPublic |BindingFlags.Static。
利用fi.GetValue(classname的实例化对象名称),获取类对象中的私有字段的值,若需要访问的字段为private static类型,括号内填写new classname()即可。
利用fi.SetValue(类对象名,给字段所赋的值),设置类中的私有字段的值,若需要访问的字段为private static类型,类对象名填写new classname()即可。
根据具体函数完成测试用例的其他内容编写,得到编写的新的测试用例。
具体地,如图3所示,在对私有函数进行单元测试时,上述步骤S1:查找原测试用例所在的测试文件,并在测试文件头部添加反射的命名空间的引用,具体为:
找到在测试工程中找到此函数所在.cs文件对应的测试文件,此文件的头部添加“using System.Reflection”,并在测试文件中添加该私有函数的测试用例框架。
具体地,在对私有函数进行单元测试时,上述步骤S2:利用反射调用方法访问私有函数,编写新的测试用例,包括如下细分步骤S23- S24:
S23、在所述测试文件中添加所述私有函数的测试用例,并实例化被测类;
S24、通过反射方法获取被测类中的私有函数,并编写所述新的测试用例。
具体过程如下:
利用Type t=typeof(classname) 或者Type t= target.GetType();获取被测类关联的Type对象t(classname为被测类名,target为被测类实例化名)。
利用 MethodInfo meth = t.GetMethod(“私有方法名称”,BindingFlags.NonPublic | BindingFlags.Instance),访问被测私有函数。
初始化私有方法的各个参数。
利用 meth.Invoke(类对象名称,私有方法参数) ,来调用私有方法。此处的“私有方法参数”指的是一个对象数组,这些对象与调用的私有函数的参数具有相同的数量、顺序和类型;如果该私有函数是无参的,应为null。
并完成测试用例中其他内容编写,得到新的测试用例。
特别地,当私有函数含有ref或out参数或者私有函数有返回值时,将方法参数初始化后,封装进object数组中:
利用object[] invokes = new object[]{参数1,参数2,...}
meth.Invoke(类对象名称,invokes ),调用私有方法。然后查看调用后的参数值:invokes [0],invokes [1]...或函数返回值。
需要说明的是,在“meth.Invoke(类对象名称,私有方法参数)”处的私有方法参数不能直接传进去,需要先把它封装进object数组,例如:正确的写法是meth.Invoke(target, new object[] { trainDirection, downBitValue, upBitValue });
而不是meth.Invoke(target,rainDirection, downBitValue, upBitValue);
需要说明的是,本实施例如此操作就可以查看调用后的参数值或函数的返回值,避免代码出错,导致编译不通过。
需要说明的是,以测试函数ClearSignalData为例,其中__signalInformationDataList为当前函数所在类的私有成员字段,测试用例中标明如何获取该字段以及给该字段赋值。利用正常编写的测试用例运行测试后的覆盖率如图4所示,图4中阴影部分表示已覆盖,阴影未覆盖部分表示未覆盖,由于使用正常编写的测试用例无法访问到私有成员,故覆盖率达不到100%。
利用本实施例中反射调用的方法访问私有成员,修改测试用例,运行测试用例后查看覆盖率如图5所示,阴影部分表示已覆盖,已达到要求。
下面以私有函数GetUpDownBitValue对使用反射调用的方法对私有函数进行单元测试进行说明:
在VS2012中,无法按照一般公有函数自动添加测试用例,在添加用例时无私有函数选项,故需要在测试工程中找到此函数所在.cs文件对应的测试文件,本文中待测函数所在的源文件是“CItoATSDataInterfaceClass.cs”,对应在测试工程中的测试文件是“CItoATSDataInterfaceClassTest.cs”。找到该文件后,在此文件的头部添加“usingSystem.Reflection”。在测试文件中直接手动添加测试用例。完成测试用例添加后,即可运行代码覆盖率。运行完成后,查看覆盖率情况如图6所示,阴影部分表示已覆盖,已成功访问并按用例要求完成相关覆盖率。
如图7所示,本实施例还公开了一种单元测试系统,用于对含有私有成员的函数及私有函数进行单元测试,包括查找模块10、反射调用模块20和测试模块30:
查找模块10用于查找原测试用例所在的测试文件,并在测试文件头部添加反射的命名空间的引用;
反射调用模块20用于用于利用反射方法访问私有成员或私有函数,编写新的测试用例;
测试模块30用于根据新的测试用例,执行单元测试代码,生成测试报告。
具体地,在对含有私有成员的函数进行单元测试时,所述反射调用模块包括查找单元和第一反射调用单元;
查找单元用于查找所述原测试用例,并实例化被测类;
第一反射调用单元用于通过反射方法获取类中的私有字段,以在测试文件中修改原测试用例,并编写所述新的测试用例。
其中,所述第一反射调用单元包括第一获取子单元、第一反射调用子单元、私有字段值获取子单元和私有字段值设置子单元;
第一获取子单元用于获取所述被测类类型关联的Type对象 t;
第一反射调用子单元用于利用反射机制的FieldInfo,发现字段属性并提供对字段元数据的访问权,通过Type对象 t,获取所述被测类中的私有字段;
私有字段值设置子单元用于利用FieldInfo类的SetValue方法,设置所述被测类中的私有字段的值,并完成测试用例编写。
具体地,在对私有函数进行单元测试时,所述反射调用模块包括添加单元和第二反射调用单元;
添加单元用于在所述测试文件中添加所述私有函数的测试用例,并实例化被测类;
第二反射调用单元用于通过反射方法获取被测类中的私有函数,并编写所述新的测试用例。
其中,第二反射调用单元包括第二获取子单元、第二反射调用子单元、调用子单元和编写子单元;
第二获取子单元用于获取所述被测类类型关联的Type对象 t;
第二反射调用子单元用于利用反射的MethodInfo访问所述被测类中的私有函数;
调用子单元用于利用MethodInfo类的Invoke方法,调用私有函数;
编写子单元用于初始化私有函数的参数,并编写所述新的测试用例
需要说明的是,本实施例公开的一种单元测试系统与上述实施例公开的一种单元测试方法具有相同或相应的技术特征具有相同或相应的技术效果,该处不再赘述。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种单元测试方法,其特征在于,用于对含有私有成员的函数或私有函数进行单元测试,包括:
查找原测试用例所在的测试文件,并在测试文件头部添加反射的命名空间的引用;
利用反射访问私有成员或私有函数,编写新的测试用例;
根据新的测试用例,执行单元测试代码,生成测试报告。
2.如权利要求1所述的单元测试方法,其特征在于,在对含有私有成员的函数进行单元测试时,所述利用反射访问私有成员,编写新的测试用例,包括:
查找所述原测试用例,并实例化被测类;
通过反射获取类中的私有字段,以在测试文件中修改原测试用例,并编写所述新的测试用例。
3.如权利要求2所述的单元测试方法,其特征在于,所述通过反射方法获取类中的私有字段,以在测试文件中修改原测试用例,并编写所述新的测试用例,包括:
获取所述被测类类型关联的Type对象 t;
利用反射的FieldInfo,发现字段属性并提供对字段元数据的访问权,通过Type对象t,获取所述被测类中的私有字段;
利用FieldInfo类的SetValue方法,设置所述被测类中的私有字段的值,并完成测试用例编写。
4.如权利要求1所述的单元测试方法,其特征在于,在对私有函数进行单元测试时,所述利用反射方法访问私有函数,编写新的测试用例,包括:
在所述测试文件中添加所述私有函数的测试用例,并实例化被测类;
通过反射方法获取被测类中的私有函数,并编写所述新的测试用例。
5.如权利要求4所述的单元测试方法,其特征在于,所述通过反射方法获取被测类中的私有函数,并编写所述新的测试用例,包括:
获取所述被测类类型关联的Type对象 t;
利用反射的MethodInfo,发现方法的属性并提供对方法元数据的访问,通过Type对象t,访问所述被测类中的私有函数;
初始化私有函数的参数;
利用MethodInfo类的Invoke方法将所述被测类对象名称和私有方法参数传给Invoke方法,来调用所述私有函数,并编写所述新的测试用例。
6.如权利要求5所述的单元测试方法,其特征在于,在所述私有方法中包含ref或out参数或者函数有返回值时,还包括:
将所述初始化后的私有方法的参数封装进object数组中;
初始化object数组,并调用私有方法查看调用后的参数值或函数的返回值。
7.一种单元测试系统,其特征在于,用于对含有私有成员的函数或私有函数进行单元测试,包括查找模块、反射调用模块和测试模块:
查找模块用于查找原测试用例所在的测试文件,并在测试文件头部添加反射的命名空间的引用;
反射调用模块用于利用反射方法访问私有成员或私有函数,编写新的测试用例;
测试模块用于根据新的测试用例,执行单元测试代码,生成测试报告。
8.如权利要求7所述的单元测试系统,其特征在于,在对含有私有成员的函数进行单元测试时,所述反射调用模块包括查找单元和第一反射调用单元;
查找单元用于查找所述原测试用例,并实例化被测类;
第一反射调用单元用于通过反射方法获取类中的私有字段,以在测试文件中修改原测试用例,并编写所述新的测试用例。
9.如权利要求8所述的单元测试系统,其特征在于,所述第一反射调用单元包括第一获取子单元、第一反射调用子单元、私有字段值获取子单元和私有字段值设置子单元;
第一获取子单元用于获取所述被测类类型关联的Type对象 t;
第一反射调用子单元用于利用反射机制的FieldInfo,发现字段属性并提供对字段元数据的访问权,通过Type对象 t,获取所述被测类中的私有字段;
私有字段值设置子单元用于利用FieldInfo类的SetValue方法,设置所述被测类中的私有字段的值,并完成测试用例编写。
10.如权利要求7所述的单元测试系统,其特征在于,在对私有函数进行单元测试时,所述反射调用模块包括添加单元和第二反射调用单元;
添加单元用于在所述测试文件中添加所述私有函数的测试用例,并实例化被测类;
第二反射调用单元用于通过反射方法获取被测类中的私有函数,并编写所述新的测试用例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911385923.2A CN111008153B (zh) | 2019-12-29 | 2019-12-29 | 一种单元测试方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911385923.2A CN111008153B (zh) | 2019-12-29 | 2019-12-29 | 一种单元测试方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111008153A true CN111008153A (zh) | 2020-04-14 |
CN111008153B CN111008153B (zh) | 2023-05-30 |
Family
ID=70119359
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911385923.2A Active CN111008153B (zh) | 2019-12-29 | 2019-12-29 | 一种单元测试方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111008153B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114528214A (zh) * | 2022-02-18 | 2022-05-24 | 马上消费金融股份有限公司 | 单元测试方法和装置 |
CN116822040A (zh) * | 2023-03-17 | 2023-09-29 | 中国人民解放军63620部队 | 基于虚函数的飞行器仿真模型的单元测试框架构建方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070033576A1 (en) * | 2005-08-04 | 2007-02-08 | Microsoft Corporation | Symbolic execution of object oriented programs with axiomatic summaries |
CN102207903A (zh) * | 2010-03-29 | 2011-10-05 | 微软公司 | 用于单元测试的自动重定向方法调用 |
CN103106137A (zh) * | 2011-11-15 | 2013-05-15 | 上海宝康电子控制工程有限公司 | 计算机模块化软件系统中实现自动化单元测试的方法 |
CN104077213A (zh) * | 2013-03-26 | 2014-10-01 | 腾讯科技(深圳)有限公司 | 一种webkit单元测试方法及装置 |
-
2019
- 2019-12-29 CN CN201911385923.2A patent/CN111008153B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070033576A1 (en) * | 2005-08-04 | 2007-02-08 | Microsoft Corporation | Symbolic execution of object oriented programs with axiomatic summaries |
CN102207903A (zh) * | 2010-03-29 | 2011-10-05 | 微软公司 | 用于单元测试的自动重定向方法调用 |
CN103106137A (zh) * | 2011-11-15 | 2013-05-15 | 上海宝康电子控制工程有限公司 | 计算机模块化软件系统中实现自动化单元测试的方法 |
CN104077213A (zh) * | 2013-03-26 | 2014-10-01 | 腾讯科技(深圳)有限公司 | 一种webkit单元测试方法及装置 |
Non-Patent Citations (1)
Title |
---|
高远;杨欣;李凯;: "基于JTest的自动化单元测试技术" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114528214A (zh) * | 2022-02-18 | 2022-05-24 | 马上消费金融股份有限公司 | 单元测试方法和装置 |
CN116822040A (zh) * | 2023-03-17 | 2023-09-29 | 中国人民解放军63620部队 | 基于虚函数的飞行器仿真模型的单元测试框架构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111008153B (zh) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10795660B1 (en) | Live code updates | |
US6438744B2 (en) | Dynamic mapping of component interfaces | |
US7320123B2 (en) | Method and system for detecting deprecated elements during runtime | |
US8954929B2 (en) | Automatically redirecting method calls for unit testing | |
US8578339B2 (en) | Automatically adding bytecode to a software application to determine database access information | |
US20030120824A1 (en) | System supporting object-oriented constructs in ECMAScript | |
US20100192026A1 (en) | Implementations of program runtime checks | |
CN101247292B (zh) | 基于通用测试仪表应用编程接口的测试设备及测试方法 | |
US20050251719A1 (en) | Test case inheritance controlled via attributes | |
WO2007090817A1 (en) | Collaborative classloader system and method | |
US6658657B1 (en) | Method and apparatus for reducing the overhead of virtual method invocations | |
US6721807B2 (en) | Extensible and efficient double dispatch in single-dispatch object-oriented programming languages | |
KR20140023971A (ko) | 고도로 동시적인 처리 작업들의 등록 및 실행 | |
US20020199171A1 (en) | Generic Java rule engine framework | |
CN111008153A (zh) | 一种单元测试方法及系统 | |
US20050081106A1 (en) | Software testing | |
US20220300264A1 (en) | Implementing optional specialization when compiling code | |
CN111027054A (zh) | 基于安卓系统判断应用程序在多开环境中运行方法、系统 | |
US20060122958A1 (en) | Matching client interfaces with service interfaces | |
CN111324395B (zh) | 调用方法、装置和计算机可读存储介质 | |
US20100180269A1 (en) | Domains with polymorphic type implementations | |
EP2237150A1 (en) | Method for simplifying interfaces having dynamic libraries | |
US7010454B1 (en) | Test services provider | |
WO2001001256A1 (en) | Method and apparatus for static analysis of software code | |
CN106406970B (zh) | 用于保护超级管理程序的应用程序编程接口的方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |