Main Content

编写单元测试的方法

要在代码功能中指导软件开发并监视回归,您可以为您的程序编写单元测试。MATLAB® 单元测试框架支持三种测试编写方案:

  • 基于脚本的单元测试:将每个单元测试编写为测试脚本文件的一个单独的节。您可以执行基本鉴定,访问框架在测试结果上记录的诊断信息,通过选择要运行的测试来优化测试套件,以及通过创建和配置 TestRunner 对象来自定义测试运行。

  • 基于函数的单元测试:将每个单元测试编写为测试函数文件中的一个局部函数。基于函数的测试采用 xUnit 测试原理。除了支持基于脚本的测试所提供的功能之外,基于函数的测试还支持您访问一组丰富的测试编写功能。例如,您可以使用高级鉴定功能,包括约束、容差和测试诊断。

  • 基于类的单元测试:将每个单元测试编写为类定义文件中的一个 Test 方法。除了支持基于脚本和基于函数的测试所提供的功能之外,基于类的测试还为您提供一些高级的测试编写功能,并支持您访问完整的框架功能。例如,您可以使用共享测试脚手架、参数化测试和重用测试内容。

Test authoring schemes in order of increasing functionality: script-based tests, function-based tests, and class-based tests

基于脚本的单元测试

通过基于脚本的测试,您可以:

  • 定义要在测试中共享的变量或测试所需的预条件。

  • 使用 assert 函数执行基本鉴定。例如,您可以使用 assert(isequal(actVal,expVal)) 来断言实际值和预期值相等。(仅基于函数和基于类的测试支持高级鉴定功能。)

  • 访问框架记录的测试诊断。有关详细信息,请参阅以编程方式访问测试诊断。(仅基于函数和基于类的测试支持高级诊断操作。)

通常,使用基于脚本的测试,您可以创建测试文件并将文件名传递给 runtests 函数,而无需显式创建 Test 元素的套件。如果您创建了一个显式测试套件(使用 testsuite 函数或 matlab.unittest.TestSuite 类的方法),则基于脚本的测试中会提供其他功能。借助显式测试套件,您可以:

  • 优化您的套件,例如,使用 matlab.unittest.selectors 命名空间中的类来优化套件。(一些选择器只适用于基于类的测试。)

  • 创建 TestRunner 对象,并对其进行自定义以运行您的测试。您可以将 matlab.unittest.plugins 命名空间中的插件类添加到测试运行器中。

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

基于函数的单元测试

基于函数的测试支持基于脚本的测试所提供的功能。此外,通过基于函数的测试,您可以:

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

基于类的单元测试

基于类的测试支持基于脚本和基于函数的测试所提供的功能。此外,通过基于类的测试,您可以:

有关基于类的测试的详细信息,请参阅在 MATLAB 中编写基于类的单元测试

扩展单元测试框架

单元测试框架使测试框架编写者能够通过自定义约束、诊断、脚手架和插件来扩展测试编写。例如,您可以创建一个自定义插件,并在运行基于脚本、基于函数或基于类的单元测试时使用它来扩展测试运行器。有关详细信息,请参阅扩展测试框架

相关主题

外部网站