Main Content

本页采用了机器翻译。点击此处可查看英文原文。

sltest.CodeImporter 类

将 C 或 C++ 代码导入 Simulink 进行测试

自 R2021a 起

描述

使用 sltest.CodeImporter 类的对象将 C 库或库的子集导入到 Simulink® 中进行建模和测试。当您导入代码时,会创建一个 Simulink 库和一个测试文件。每个 C 兼容函数映射到库中的一个 C Caller 模块,并且每个 C Caller 模块默认都有一个附加的内部测试框架。创建的 MLDATX 测试文件包含每个导入函数的测试用例。对于单元测试,您只能导入 C 代码。此外,对于单元测试,创建了一个沙箱来隔离导入的 C 代码。

注意

如果您的代码库包含 C++ 类方法,则只有包装在有效 C 函数包装器中的 C++ 方法才会使用 CodeImporter 导入到 Simulink 中。

或者,您可以使用向导来设置并将代码导入 Simulink。在测试管理器中,使用 新建 > 为 C/C++ 代码创建测试 打开向导。

sltest.CodeImporter 类是 handle 类。

类属性

HandleCompatible
true

有关类属性的信息,请参阅 类属性

创建对象

描述

codeimport_obj = sltest.CodeImporter 创建一个 Simulink Test™ 代码导入器对象,以 untitled 作为 Simulink 库文件名,并创建四个附加对象,您可以使用 SandboxSettingsParseInfoCustomCodeOptions 属性访问这些对象。

示例

codeimport_obj = sltest.CodeImporter(libraryfile) 创建代码导入器对象,并使用指定的 libraryfile 作为创建的 Simulink 库的名称。它将 LibraryFileName 属性设置为 libraryfile

示例

属性

全部展开

测试类型,指定为字符串或字符向量。要单独测试自定义代码库的子集,请使用 "UnitTest"。单元测试的代码可能不完整,并且可能有未定义的符号。CodeImporter 会自动为未定义的符号创建桩件。当您指定 "UnitTest" 时,也会创建一个沙箱。要测试整个代码库,请使用 "IntegrationTest"

示例: codeimport_obj.TestType = "IntegrationTest"

属性:

GetAccess
public
SetAccess
public

单元测试的沙盒配置,指定为 SandboxSettings 对象。仅当 TestTypeUnitTest 时,此属性才适用。如果 TestTypeIntegrationTest,则忽略沙盒设置。当您创建代码导入器对象时,会创建一个默认的 SandboxSettings 对象。在使用 createSandbox 方法之前,您可以更改默认属性值。有关更改沙盒模式、将源文件复制到沙盒文件夹以及删除指令和变量定义头属性的信息,请参阅 sltest.CodeImporter.SandboxSettings

示例: codeimport_obj.SandboxSettings.CopySourceFiles = true

属性:

GetAccess
public
SetAccess
private

创建的 Simulink 库文件和相关工件的名称,指定为字符串或字符向量。相关工件包括数据字典、沙盒文件夹和测试文件。例如,如果 LibraryFileName"myCodeTest"

  • Simulink 库名称是 myCodeTest.slx

  • 数据字典名称是 myCodeTest.sldd

  • 沙盒文件夹名称为 myCodeTest_sandbox

  • 测试文件是 myCodeTest.mldatx

如果您未指定库文件名,则默认为 untitled

示例: codeimport_obj.LibraryFileName = "myCodeTest"

属性:

GetAccess
public
SetAccess
public

创建的库和相关工件文件的文件夹,指定为字符串或字符向量。默认值为空字符串,解释为当前工作文件夹。您也可以使用 MATLAB® 路径命令指定 OutputFolder,并将其括在 $ 中,例如 $pwd$,即当前工作文件夹。

示例: codeimport_obj.OutputFolder = "C:/myMATLABFiles/CodeImports"

示例: codeimport_obj.OutputFolder = "$pwd"

属性:

GetAccess
public
SetAccess
public

要导入的 C 或 C++ 代码文件及其相关属性,指定为 CustomCode 对象。使用此属性可以更改代码导入选项,例如源文件和头文件、文件夹路径、库以及编译器和链接器标志。有关信息,请参阅 Simulink.CodeImporter.CustomCode

属性:

GetAccess
public
SetAccess
private

附加导入选项,指定为 Simulink.CodeImporter.Options 对象。使用此对象来更改指向函数的指针传递的参量大小的默认值,在导入代码时创建测试框架,或者更改 Simulink 库浏览器名称。有关信息,请参阅 Simulink.CodeImporter.Options

属性:

GetAccess
public
SetAccess
private

在调用 parse 方法之前,ParseInfo 对象属性具有空值。解析后,ParseInfo 会包含代码是否解析成功,以及代码中可用的函数、入口函数、类型的信息。有关信息,请参阅 Simulink.CodeImporter.ParseInfo

属性:

GetAccess
public
SetAccess
private

方法

全部展开

示例

全部折叠

此示例假设您有现有的 C 代码文件需要测试,但您不想测试整个 C 代码库。

  1. 创建一个 sltest.CodeImporter 对象并指定 myCodeTest 作为 Simulink 库文件名。

    codeimport_obj = sltest.CodeImporter("myCodeTest");

  2. 将源文件分配给 CustomCode 属性。

    codeimport_obj.CustomCode.SourceFiles = {"myCode1.c"};

  3. 创建沙盒。createSandbox 方法会自动为任何未定义的符号创建桩件文件。

    codeimport_obj.createSandbox;
    创建沙箱后,您可以检查创建的桩件,如果需要,可以使用 sandbox 文件夹的 manualstub 子文件夹中的文件手动桩件符号。然后,重复 createSandbox 命令来更新沙盒。

  4. 解析生成的沙盒

    codeimport_obj.parse;

  5. 将代码导入 Simulink 库模型。import 方法默认创建一个测试文件。

    codeimport_obj.import;

  6. 打开测试管理器。然后,打开创建的 myCodeTest.mldatx 测试文件,并运行创建的测试用例。

此示例假设您有一个现有的 C 或 C++ 代码库需要测试,并且所有 C++ 方法都在 C 包装函数中。

  1. 创建一个 sltest.CodeImporter 对象并指定 myCodeLibTest 作为 Simulink 库名称。将 TestType 设置为 IntegrationTest

    codeimport_obj = sltest.CodeImporter("myCodeLibTest");
    codeimport_obj.TestType = "IntegrationTest";

  2. 创建一个指定头文件的 CustomCode 对象。使用 custcode.<propertyname> = <value> 语法指定其他类型的文件和属性。然后,将 CustomCode 对象分配给 CustomCode 属性。

    codeimport_obj.CustomCode.SourceFiles = {"myCode1.c", "myCode2.c"};
    codeimport_obj.InterfaceHeaders = {"myCode_a.h","myCode_b.h"};

  3. 解析指定代码。

    codeimport_obj.parse;

  4. 将代码导入 Simulink 库模型。import 方法默认创建一个测试文件。

    codeimport_obj.import;

  5. 打开测试管理器。然后,打开创建的 myCodeLibTest.mldatx 测试文件,并运行创建的测试用例。

版本历史记录

在 R2021a 中推出