gpt4 book ai didi

unit-testing - 编译器输出的单元测试

转载 作者:行者123 更新时间:2023-12-04 04:55:40 25 4
gpt4 key购买 nike

作为大学项目的一部分,我们必须为玩具语言编写编译器。为了对此进行一些测试,我正在考虑如何最好地编写单元测试之类的东西。由于编译器是用 haskell 编写的,因此 Hunit 和 quickcheck 都可用,但可能不太合适。

我们如何进行任何类型的非手动测试?
我唯一的想法就是有效地编译到haskell,查看输出是什么,并使用一些shell脚本将其与编译程序的输出进行比较——这是一项相当多的工作,而且不太优雅任何一个。

单元测试是为了帮助我们,而不是评估工作本身的一部分。

最佳答案

这实际上取决于您正在编写的编译器的哪些部分。如果您可以保持不同的阶段以帮助隔离问题,那就太好了,但是,在任何阶段,甚至在集成级别,拥有由成对的源代码和手动编译的代码组成的单元测试是完全合理的。您可以从最简单的合法程序开始,并确保您的编译器输出与手动编译相同的内容。

随着复杂性的增加和手工编译变得笨拙,编译器保留某种类型的日志来记录它所做的事情是有帮助的。然后,您可以查阅此日志以确定是否为给定的源程序触发了特定的转换或优化。

根据您的语言,您可能会考虑从程序片段集合中生成随机程序(在 QuickCheck 脉络中)。这个生成器可以测试你的编译器的稳定性,以及处理潜在不可预见的输入的能力。

关于unit-testing - 编译器输出的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4233630/

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