【发布时间】:2026-01-22 05:50:01
【问题描述】:
我需要测试可在 Linux 和 Windows 上运行的数值软件。测试涉及将输出与已知良好的输出等进行比较,类似于在 Numerical regression testing。为了澄清,输出不一定是数字 - 它们可以是分类器或文本的分类预测。在 Linux 上,这是一个差异;在 Windows 上是另外一回事,但我的目标是每个测试只编写一次。我知道 CMake/CTest 可用于生成跨平台测试,但它们似乎仅限于检查非零退出状态。是否有软件可以在每个平台上自动选择正确的“差异”?也许是我不知道的 CTest 模块/包?
【问题讨论】:
-
如果你正在编写一个数字包,你可能已经有了一个语言和库,可以让你做比比较数字更复杂的事情。我怀疑直接用 C(或任何你的语言)对回归测试进行编码,并在测试通过时以指示成功的状态退出测试将是最简单的事情。
-
不要使用差异。你永远不会在不同的计算机上得到相同的结果。您必须定义合理的绝对误差和相对误差,并相应地比较您的结果。
-
@usr1234567,我补充说明输出不一定是数字。所以对于很多测试来说,diff 是合适的。
标签: cmake regression-testing ctest