我经常在开发 API 时在主函数中编写测试代码,但因为 D 集成了单元测试,所以我想开始使用它们。
我当前的工作流程如下,我有一个脚本可以监视任何 .d 文件中的文件更改,如果脚本找到修改过的文件,它将运行dub build
问题是dub build
似乎没有构建单元测试
module foo
struct Bar{..}
unittest{
...
// some syntax error here
...
}
如果我显式运行,它只会编译单元测试dub test
。但我不想同时运行和编译它们。
第二个问题是我希望能够为单个模块运行单元测试
dub test module foo
这可能吗?
您可以使用特征来编写自定义测试运行程序获取单元测试 http://dlang.org/spec/traits.html#getUnitTests.
获取单元测试
采用一个参数,一个聚合的符号(例如结构/类/模块)。结果是该聚合的所有单元测试函数的元组。返回的函数与普通的嵌套静态函数类似,CTFE 可以工作并且 UDA 可以访问。
in your 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)