文件交换的选择

我们最好的用户提交

我认为你只是想测试我!

格雷格本周的选择MATLAB编码器单元测试使用MATLAB和C代码通过比尔周

一般我尽量选择条目由MathWorks以外,但法案提供了一个很好的示范,结合两个主题我热爱:形式化测试和代码生成。

使用单元测试结合MATLAB编码器使三个功能:

  • 自动定义接口的数据类型生成的c代码。
  • 验证从MATLAB生成的c代码产生预期的结果。
  • 执行测试开发的MATLAB与c代码开发在MATLAB环境。
  • 我建议看看比尔的视频,沿着这个条目。

    内容

    什么是单元测试,我为什么要使用它呢?

    从根本上讲,一个单元测试确定是否单一功能的软件在特定条件下产生预期的结果。理论是,保持“小”和特定的测试,更容易开发和维护软件和测试。

    进行测试的主要好处是它有助于确定设计是否满足要求。这可能适用于软件的初步设计,或当你决定更改软件。

    有各种各样的额外的理念和技术,可以应用单元测试等行为驱动开发(BDD)。我不会进入这里,就说你如何使用单元测试将告诉您如何写。

    等待……有单元测试在MATLAB ?

    更具体地说,有一个MATLAB中可用的单元测试框架。它是基于xUnit框架。对于那些可能会困在旧版本的MATLAB,值得查看这个文件的交换条目

    我喜欢使用MATLAB的单元测试框架提供了一个一致的定义测试方法,以及大量的工具和功能自动化测试执行。它还提供了许多复杂的水平,所以如果你不锻炼你的代码编写的类和方法,您可以使用简单脚本功能代替。

    更多关于使用这个框架,我建议看看安迪的博客在这里

    我为什么要使用MATLAB运行测试我的c代码吗?

    似乎是不必要的,可能只是因为你可以使用一个工具。

    使用正确的工具来完成工作。如果你想让你的测试利用其他MATLAB功能,没有现成的你使用的语言(策划、过滤、数据管理),那么它很可能意义在MATLAB开发测试套件。

    附带好处,比尔没有提及

    在上面的视频我联系中,比尔做了不错的工作经历如何应用c代码的单元测试的测试过程。然而,有一个额外的好处从MATLAB生成c代码,比尔不直接在本示例的视频地址。

    如果你看第二步的MATLAB编码器的应用程序称为“定义输入类型”,你会发现run_unit_tests出现在“自动定义输入类型”对话框。

    通过执行代码在该对话框中找到,MATLAB编码器可以确定所使用的数据类型是在输入的函数生成代码,并应用适当的约束。

    unittesttypedefinitionscript

    在这种情况下你会发现addOne有一个输入变量的函数x这是一个标量类型(1 * 1)

    unittesttypedefinitionresult

    一个例子,如何使用此功能可以在分钟两点半的视频在这里

    类型定义的输入是必需的,因为c代码是一种静态类型语言,而MATLAB是一种动态类型语言。(看看这个讨论更多细节关于这些类型的系统有所不同)

    修改测试失败明显。

    当单元测试失败时,要看测试结果总结来确定是否有故障。

    使它更加突出时失败,我建议抛出错误或断言如果有任何测试失败。我改变了run_unit_tests.m如下:

    结果= runtests (pwd);如果任何([results.Failed])错误(单元测试失败);结束

    unittesterrormessage

    这样,它变得很明显,有一个问题需要解决。

    任何想法在这个条目?

    让我们知道在这里




    使用MATLAB®9.0发表

    |
    • 打印

    评论

    留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。