在 Octave 中测试子函数

Test subfunctions in Octave

我在 Octave %test 中定义了一些 subfunctions in my Octave's .m file, and would like to use the built-in self-test 来像单元测试一样测试这些子功能。

我的 .m 文件如下所示:

function A = fn1()
   A = 1
end

function B = fn2()
   B = 2
end

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

但有人告诉我:

!!!!! test failed

'fn2' undefined near line 2 column 9

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

更新:

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

您不能为子函数编写测试。测试工作由 运行 测试块中的代码。如果代码中的测试失败 测试块错误。通常,测试单元会调用 函数正在代码测试中的某处进行测试。

但是,子函数只存在于它们父函数的范围内 职能。它们将不会在任何其他范围内可用,因此 不能调用。测试单元将失败,因为该功能不是 定义。

这实际上是一个很常见的问题。典型的答案是 子函数的存在只是为了由父级在某处调用。所以 相反,您应该编写一个测试单元来覆盖对它的调用 子功能。如果它变得太难了,那么你的父函数 可能做了太多的事情,你应该考虑有多个 函数。