gpt4 book ai didi

nim-lang - 如何为在 Nim 中编译失败的代码编写单元测试?

转载 作者:行者123 更新时间:2023-12-02 22:11:46 25 4
gpt4 key购买 nike

我在 unittest 模块的帮助下编写了大部分单元测试,但我不确定如何将它用于编译器在编译时应拒绝的代码。例如,如果我想编写以下代码并确保编译器在编译期间始终出错(类型和模板将位于单独的模块中),我该如何为此编写测试用例?

import macros
type
T[n:static[int]] = object
template foo3(n: int): expr =
static:
if n > 3: error "n > 3"
type T3 = T[n]
T3
var
bar: foo3(4)

最佳答案

您可以使用系统模块提供的compiles 魔法来执行类似的操作。

以下是编译器测试套件的示例:
https://github.com/nim-lang/Nim/blob/devel/tests/metatype/tbindtypedesc.nim#L19

请注意,在文件顶部,我们如何使用 compiles 魔法将 acceptreject 定义为简单的静态断言,并使用它们在整个文件中测试有效和无效的重载调用。

就我个人而言,我认为编译时失败更好,但您可以将 compiles 的结果分配给运行时值或在 check 语句中使用它。这样做的唯一优点是,将以单元测试库的标准方式报告失败。

关于nim-lang - 如何为在 Nim 中编译失败的代码编写单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35279524/

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