主要内容

编写单元测试的方法

为了指导软件开发并监视代码功能的退化,可以为程序编写单元测试。MATLAB®单元测试框架支持三个测试创作方案:万博1manbetx

  • 基于脚本的单元测试:将每个单元测试写为测试脚本文件的单独部分。您可以执行基本资格,访问框架记录在测试结果上的诊断,通过选择要运行的测试来完善测试套件,并通过创建和配置a来自定义测试运行TestRunner目的。

  • 基于函数的单元测试:将每个单元测试写入测试功能文件中的本地函数。基于功能的测试订阅了XUNIT测试哲学。除了支持基于脚本的测试提供的功万博1manbetx能之外,基于功能的测试还可以访问丰富的测试创作功能。例如,您可以使用高级资格功能,包括约束,公差和测试诊断。

  • 基于类的单元测试:将每个单元测试写成测试方法在类定义文件中。除了支持基于脚本和基于函数的测万博1manbetx试提供的功能外,基于类的测试还为您提供了几个高级测试编写特性,并使您能够访问完整的框架功能。例如,您可以使用共享的测试装置、参数化测试和重用测试内容。

测试创作方案按求增的功能:基于脚本的测试,基于函数的测试和基于类的测试

基于脚本的单元测试

使用基于脚本的测试,您可以:

  • 定义测试之间共享的变量或测试所需的先决条件。

  • 使用该基本资格断言功能。例如,您可以使用断言(isequal (actVal, expVal))断言实际值和期望值相等。(高级资格特性仅支持基于函数和基于类的测试。)万博1manbetx

  • 访问框架记录的测试诊断。有关更多信息,请参见以编程方式访问测试诊断.(仅对基于函数和基于类的测试支持高级诊断操作。)万博1manbetx

通常,对于基于脚本的测试,您创建一个测试文件,并将文件名传递给runtests.函数,而不显式地创建测试元素。如果您创建显式测试套件(使用testsuite.的函数或方法matlab.unittest.TestSuite类),在基于脚本的测试中还有其他可用的特性。通过显式测试套件,您可以:

  • 改进您的套件,例如,使用matlab.unittest.Selectors.包中。(一些选择器仅适用于基于类的测试。)

  • 创建一个TestRunner对象并自定义它以运行测试。您可以在中添加插件类matlab.unittest.plugins打包到测试运行器。

有关基于脚本的测试的更多信息,请参阅编写基于脚本的单元测试扩展基于脚本测试

基于功能的单元测试

基于函数的测试支持基于脚本的测试提供的功能万博1manbetx。此外,使用基于函数的测试,您可以:

有关基于功能的测试的详细信息,请参见编写基于功能的单元测试扩展基于函数的测试

基于类的单元测试

基于类的测试支持基于脚本和基于函数的万博1manbetx测试提供的功能。此外,使用基于类的测试,您可以:

  • 使用设置和拆卸方法块隐式设置预测试环境状态,并在运行测试后将其返回到原始状态。有关更多信息,请参见使用类编写安装和拆卸代码

  • 分享课程中的夹具。有关更多信息,请参见使用共享fixture编写测试

  • 将组测试分类,然后使用指定标记运行测试。有关更多信息,请参见标签单元测试

  • 编写参数化测试以在指定的参数列表上组合和执行测试。有关更多信息,请参见在基于类的测试中使用参数

  • 使用子类化和继承来共享和重用测试内容。例如,您可以通过派生子类重用测试类中定义的参数和方法。有关更多信息,请参见类的层次结构-概念

有关基于类测试的更多信息,请参阅作者基于类的单元测试在MATLAB

扩展单元测试框架

单元测试框架为测试工具作者提供了通过自定义约束、诊断、fixture和插件扩展测试编写的能力。例如,您可以创建自定义插件,并在运行基于脚本、基于函数或基于类的单元测试时使用它扩展测试运行器。有关更多信息,请参见扩展单元测试框架

相关话题