gpt4 book ai didi

d - 是否可以在不运行它们的情况下编译 unittest 并为特定模块显式运行 unittest?

转载 作者:行者123 更新时间:2023-12-01 04:58:29 28 4
gpt4 key购买 nike

在开发 API 时,我经常在 main 函数中编写测试代码,但因为 D 已经集成了 unittest,所以我想开始使用它们。

我当前的工作流程如下,我有一个脚本可以监视任何 .d 文件中的文件更改,如果脚本找到修改后的文件,它将运行 dub build
问题是 dub build似乎没有构建单元测试

module foo

struct Bar{..}

unittest{
...
// some syntax error here
...
}

如果我显式运行 dub test,它只会编译单元测试.但我不想同时运行和编译它们。

第二个问题是我希望能够为单个模块运行单元测试,例如
dub test module foo
这可能吗?

最佳答案

您可以使用 trait getUnittests 编写自定义测试运行器。 .

getUnitTests

Takes one argument, a symbol of an aggregate (e.g. struct/class/module). The result is a tuple of all the unit test functions of that aggregate. The functions returned are like normal nested static functions, CTFE will work and UDA's will be accessible.


在您的 main()你应该能够编写一些需要任意数量的模块的东西:
void runModuleTests(Modules...)()
{
static if (Modules.length > 1)
runModuleTests!(Modules[1..$]);
else static if (Modules.length == 1)
foreach(test; __traits(getUnitTests, Modules[0])) test;
}
当然是开关 -unittest必须传递给 dmd

关于d - 是否可以在不运行它们的情况下编译 unittest 并为特定模块显式运行 unittest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35075253/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com