编写单元测试的方法
为了指导软件开发和监控代码功能中的回归,您可以为程序编写单元测试。MATLAB®单元测试框架支持三种测试创作方案:金宝app
基于脚本的单元测试:将每个单元测试编写为测试脚本文件的单独部分。您可以执行基本限定、访问框架记录在测试结果上的诊断、通过选择要运行的测试来优化测试套件,以及通过创建和配置对象来自定义测试运行
TestRunner
对象。基于功能的单元测试:将每个单元测试作为测试函数文件中的局部函数编写。基于函数的测试遵循xUnit测试理念。除了支持基于脚本的测试提供的功金宝app能外,基于功能的测试还允许您访问一组丰富的测试创作特性。例如,您可以使用高级确认特性,包括约束、公差和测试诊断。
基于类的单元测试:将每个单元测试编写为
测试
类定义文件中的方法。除了支持基于脚本和基于函数的测金宝app试所提供的功能外,基于类的测试还为您提供了一些高级测试创作特性,并允许您访问完整的框架功能。例如,您可以使用共享测试fixture、参数化测试和重用测试内容。
基于脚本的单元测试
使用基于脚本的测试,您可以:
定义要在测试之间共享的变量或测试所需的先决条件。
执行基本资格
断言
函数。例如,你可以使用断言(isequal (actVal, expVal))
断言实际值和期望值相等。(高级限定特性仅支持基于功能和基于类的测试。)金宝app访问由框架记录的测试诊断。有关更多信息,请参见以编程方式访问测试诊断.(高级诊断操作仅支持基于功能和基于类的测试。)金宝app
通常,对于基于脚本的测试,您将创建测试文件,并将文件名传递给runtests
函数,而无需显式创建一套测试
元素。如果创建显式测试套件(使用testsuite
的函数或方法matlab.unittest.TestSuite
类),在基于脚本的测试中还有其他可用的特性。使用显式测试套件,您可以:
类中的类来优化您的套件
matlab.unittest.selectors
包中。(有几个选择器仅适用于基于类的测试。)创建一个
TestRunner
对象并自定义它以运行测试。控件中添加插件类matlab.unittest.plugins
打包到测试运行程序。
有关基于脚本的测试的详细信息,请参见编写基于脚本的单元测试而且扩展基于脚本的测试.
基于功能的单元测试
基于功能的测试支持基于脚本的测试提供的功能金宝app。此外,使用基于函数的测试,您可以:
设置系统的预测试状态,并在运行测试后将其返回到原始状态。您可以对每个测试文件或单元测试执行一次这些任务。有关更多信息,请参见使用Setup和Teardown函数编写测试.
类中的fixture类
matlab.unittest.fixtures
包装(附applyFixture
方法)来处理常用测试操作的设置和删除。方法以一定的详细级别记录诊断信息
日志
方法。使用完整的资格库
matlab.unittest.qualifications
包中。要确定要使用的限定,请参见验证、断言和其他条件表.使用高级鉴定功能,包括约束、实际值代理、公差和测试诊断。类中的类
matlab.unittest.constraints
而且matlab.unittest.diagnostics
包装你的资历。
有关基于函数的测试的详细信息,请参见编写基于函数的单元测试而且扩展基于功能的测试.
基于类的单元测试
基于类的测试支持基于脚本和基于功能的金宝app测试提供的功能。此外,使用基于类的测试,您可以:
使用设置和拆卸方法块隐式地设置测试前环境状态,并在运行测试后将其返回到原始状态。有关更多信息,请参见使用类编写安装和拆卸代码.
在类之间共享fixture。有关更多信息,请参见使用共享fixture编写测试.
将测试分组到类别中,然后使用指定的标记运行测试。有关更多信息,请参见标签单元测试.
编写参数化测试以组合并执行指定参数列表上的测试。有关更多信息,请参见在基于类的测试中使用参数.
使用子类化和继承来共享和重用测试内容。例如,您可以通过派生子类重用测试类中定义的参数和方法。有关更多信息,请参见类的层次结构-概念.
有关基于类的测试的详细信息,请参见在MATLAB中编写基于类的单元测试.
扩展单元测试框架
单元测试框架为测试工具作者提供了通过自定义约束、诊断、fixture和插件扩展测试编写的能力。例如,您可以创建一个自定义插件,并在运行基于脚本、基于函数或基于类的单元测试时使用它来扩展测试运行器。有关更多信息,请参见扩展单元测试框架.