内置的单元测试功能(unittest {...} 代码块)似乎只在运行时被激活。

如何在没有 main 函数的库中激活单元测试?

这与 this SO question 有点相关,尽管那里接受的答案是通过 main 函数处理解决方法。

例如,我希望单元测试在仅包含以下代码的文件上失败:

int foo(int i) { return i + 1; }

unittest {
  assert(foo(1) == 1); // should fail
}

您会注意到我没有在顶部声明 module。我不确定这对这个特定问题是否重要,但实际上我会在顶部有一个 module 语句。

最佳答案



您可以使用 DMD 的 -main 开关或 rdmd 的 --main 开关,将空的 main 函数添加到已编译的源文件集中。这允许为您的库创建单元测试二进制文件。

如果你使用 Dub,dub test 会自动做类似上面的事情。

关于unit-testing - 单元测试 D 库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49864803/

10-16 02:49
查看更多