在Octave中测试子功能

时间:2017-09-01 15:27:26

标签: unit-testing octave

我在Octave的.m文件中定义了一些subfunctions,并希望在Octave %test中使用the built-in self-test来测试这些子函数,例如单元测试。

我的.m文件如下所示:

function A = fn1()
   A = 1
end

function B = fn2()
   B = 2
end

%!test
%!assert (fn2(), 2)

但我被告知:

  

!!!!!测试失败

     

'fn2'在第2行第9列附近未定义

我想知道是否可以定义子功能并使用Octave的内置测试功能对其进行测试。感谢。

更新

我来自Java / Python世界,是Octave的新手。当我开始使用Octave处理一些问题时,我尝试在Octave中寻找一些内置的测试功能来测试Octave中的一些“私有”功能。我在Octave中找到的“私有”函数等效似乎是“子函数”,Octave中的内置测试功能是%test自测,这就是为什么我在寻找一种自我实现的方法测试Octave中的子功能。

1 个答案:

答案 0 :(得分:4)

您无法将测试写入子功能。测试通过运行来工作 测试块中的代码。如果代码中的测试失败 测试块错误。通常,测试单元会调用 函数正在代码测试中的某个地方进行测试。

但是,子功能仅存在于其父级范围内 功能。它们不会在任何其他范围内提供 不能叫。测试单元将失败,因为功能不是 定义

这实际上是一个很常见的问题。典型的答案是 子函数仅存在于父节点的某个地方。所以 相反,你应该编写一个测试单元来覆盖对它的调用 子功能。如果它变得太难了,那么你的父函数 可能会做太多的东西,你应该考虑有多个 功能