我想知道是否有任何工具可以根据方法的前置和后置条件(以及类不变性)自动生成单元测试。
准确地说,假设我们被赋予了一个方法的前置条件和后置条件(可能还有类不变),并且我们希望基于该信息生成单元测试。我正在寻找一种实用的工具。
我认识呵叻和TestWizard。你能说出更多技术/工具吗?
PS:编程语言,或者我们指定方法契约所使用的语言,并不是那么重要。我只是想知道这些技术。
谢谢。
Randoop就是这样做的。 它的手册告诉您如何指定前置条件和后置条件。
在评论中,您区分了"生成"和"指导";我不确定你的意思是什么,但你可能会认为 Randoop 使用规范作为指导。
2005-2011年在ETH进行了该领域的一项研究活动,以制作"基于合同的随机测试工具",又名AutoTest。它是为埃菲尔铁塔开发的,其中前置条件、后置条件和类不变量是语言的一部分。该工具将它们用作自动生成测试的规范。该工具与EiffelStudio开发环境集成,其中它采用合同进行3种测试:
- 手动 - 通过开发人员编写测试的良好"老派"方法;
- 提取 - 一旦出现合同违规,该工具就可以生成相应的测试用例;
- 生成 - 该工具通过确保在进入例程时满足前提条件和类不变量并检查返回时没有失败,特别是没有后置条件或类不变冲突来自动合成新测试。