我在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中的子功能。
答案 0 :(得分:4)
您无法将测试写入子功能。测试通过运行来工作 测试块中的代码。如果代码中的测试失败 测试块错误。通常,测试单元会调用 函数正在代码测试中的某个地方进行测试。
但是,子功能仅存在于其父级范围内 功能。它们不会在任何其他范围内提供 不能叫。测试单元将失败,因为功能不是 定义
这实际上是一个很常见的问题。典型的答案是 子函数仅存在于父节点的某个地方。所以 相反,你应该编写一个测试单元来覆盖对它的调用 子功能。如果它变得太难了,那么你的父函数 可能会做太多的东西,你应该考虑有多个 功能