我知道D有内置的单元测试,虽然它们非常有用,但它们也非常有限,特别是在报告错误时。我一直在关注第三方工具包和框架,似乎无法在它们之间做出决定。
关于单元测试D程序的低调是什么?
答案 0 :(得分:4)
如果您对D中的单元测试方式不满意,可用的D测试框架很少。其中大多数列在D维基:http://wiki.dlang.org/Libraries_and_Frameworks#Unit_Testing_Framework。
答案 1 :(得分:3)
大多数人都只使用内置的单元测试框架。如果您正在进行的是单元测试,那通常很多。当你进行更复杂的测试时 - 测试除了确保每个函数都有各种输入的正确输出 - 内置单元测试可能不够 - 或者至少它不提供额外的工具来支持发烧友测试。但是, 提供足够的内容来构建更复杂的测试工具(如果需要)。鉴于unittest
块本质上只是在运行测试时调用的正常函数,并且给出了D具有奇妙的编译时反射,你可以在{{1}内执行 lot 阻止。语言或标准库提供的测试专用工具并不多。在std.exception中可以找到少数几个 - 例如assertThrown
和assertNotThrown
。
现在,有些人认为内置的单元测试设备缺乏,或者只是不喜欢它们因某种原因而工作,因此社区中的人们已经创建了几个本地单元测试框架(其中许多 - as DejanLekic points out - 可以在the D wiki上找到),但此时,大多数人都只使用内置的单元测试工具。
编辑:作为Михаил Страшун points out,std.typecons确实有基本的一些设施来模拟对象,如果你正在寻找沿着这些线的东西。 e.g。
http://dlang.org/phobos/std_typecons.html#.AutoImplement http://dlang.org/phobos/std_typecons.html#.BlackHole http://dlang.org/phobos/std_typecons.html#.WhiteHole
它们是D编译时反射可以做的很好的例子,可以与D的内置单元测试工具一起使用,而不需要添加任何更复杂的语言或需要单独的框架。
答案 2 :(得分:1)
Dicebot在IRC上吸引了我,我们对测试D程序进行了冗长的讨论。要点是,D社区非常关注坚持内置的测试设施,并且大多数单元测试框架在很大程度上未被使用。用他自己的话说:
除了断言助手之外,我可能不会推荐任何更有趣的东西 (比如非致命的断言或使用类作为测试块),但是 只需调整打印的消息,随意进行实验。