我正在尝试使用库rackunit来做一些测试。
但是,我想用一个测试来检查许多输出,如下所示:
#lang racket
(require rackunit)
(check-equal? (add1 1) (* 2 1) (- 3 1) (+ 2 0))正如您所看到的,这个测试应该通过,因为所有的输出都是2。
但是,由于语法问题,此测试失败:
check-equal?: bad syntax in: (check-equal? (add1 1) (* 1 2) (- 3 1) (+ 2 0))是否有一种方法可以通过多个过程返回一个值来完成这个唯一的测试?
看着文档,我找不到它。
如果我做不到,我想我会重复我自己.
发布于 2016-12-11 14:19:15
如果你只是在检查数字,就像吉布斯蒂尔建议的那样,你可以只使用check-true和=。然而,如果你没有测试数字,我们需要得到更多的创造性。
如果要检查相等的对象是传递的:(也就是,如果(equal? a b)和(equal? b c)而不是(equal? a c),则只需在循环中运行check-equal?:
(define items (list 'items 'to 'check))
(define compare-item 'correct-item)
(for ([i (in-list items)])
(check-equal? i compare-item))当然,如果项目等式不是传递性的,那么您需要检查每一项和每一项。你仍然可以用一个循环来做这件事,它变得更复杂了。然而,一般来说,平等测试项目是传递性的。
发布于 2016-12-11 01:37:13
您可以在check-true中使用更通用的=,因为所有的值都是数字。
#lang racket
(require rackunit)
(check-true (= (add1 1) (* 2 1) (- 3 1) (+ 2 0)))https://stackoverflow.com/questions/41082141
复制相似问题