在 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 中的子函数。
您不能为子函数编写测试。测试工作由 运行
测试块中的代码。如果代码中的测试失败
测试块错误。通常,测试单元会调用
函数正在代码测试中的某处进行测试。
但是,子函数只存在于它们父函数的范围内
职能。它们将不会在任何其他范围内可用,因此
不能调用。测试单元将失败,因为该功能不是
定义。
这实际上是一个很常见的问题。典型的答案是
子函数的存在只是为了由父级在某处调用。所以
相反,您应该编写一个测试单元来覆盖对它的调用
子功能。如果它变得太难了,那么你的父函数
可能做了太多的事情,你应该考虑有多个
函数。
我在 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 中的子函数。
您不能为子函数编写测试。测试工作由 运行 测试块中的代码。如果代码中的测试失败 测试块错误。通常,测试单元会调用 函数正在代码测试中的某处进行测试。
但是,子函数只存在于它们父函数的范围内 职能。它们将不会在任何其他范围内可用,因此 不能调用。测试单元将失败,因为该功能不是 定义。
这实际上是一个很常见的问题。典型的答案是 子函数的存在只是为了由父级在某处调用。所以 相反,您应该编写一个测试单元来覆盖对它的调用 子功能。如果它变得太难了,那么你的父函数 可能做了太多的事情,你应该考虑有多个 函数。