7

我通常会制作函数并为它们编写单元测试。但是对于进行代码转换的宏,如何应用 macthing 预期值和实际值的逻辑?

因为宏的输入将是代码,输出也将是代码。这对我来说似乎很有活力,能够想出一些测试策略。

或者我可以使用宏的示例输入,并将表达式传递给 macroexpand-1 并将输出与预期的匹配?

4

2 回答 2

1

我认为这两个例子都有优点。

对于小型替换式宏,您可以测试几个示例的扩展形式。像 Midje 这样的测试框架可以帮助解决这个问题,它有一个 =expands-to=> checker

但是对于更复杂的示例,扩展表单在开发过程中通常会以微小的方式快速变化,这使得检查扩展表单变得非常脆弱。在这些示例中,我通常围绕宏的特定用途创建测试用例。

于 2013-12-03T22:05:01.500 回答
0

这个:

或者我可以使用宏的示例输入,并将表达式传递给 macroexpand-1 并将输出与预期的匹配?

您应该通过编写您期望的输出来开始编写宏,因此您应该已经有一个可用的示例。

您还可以测试来自宏的代码并验证它是否也按预期运行,就像测试函数一样。

于 2013-12-06T00:42:21.620 回答