首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在球拍中用一次测试检查多个输出

在球拍中用一次测试检查多个输出
EN

Stack Overflow用户
提问于 2016-12-11 01:33:34
回答 2查看 177关注 0票数 3

我正在尝试使用库rackunit来做一些测试。

但是,我想用一个测试来检查许多输出,如下所示:

代码语言:javascript
复制
#lang racket

(require rackunit)

(check-equal? (add1 1) (* 2 1) (- 3 1) (+ 2 0))

正如您所看到的,这个测试应该通过,因为所有的输出都是2。

但是,由于语法问题,此测试失败:

代码语言:javascript
复制
 check-equal?: bad syntax in: (check-equal? (add1 1) (* 1 2) (- 3 1) (+ 2 0))

是否有一种方法可以通过多个过程返回一个值来完成这个唯一的测试?

看着文档,我找不到它。

如果我做不到,我想我会重复我自己.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-11 14:19:15

如果你只是在检查数字,就像吉布斯蒂尔建议的那样,你可以只使用check-true=。然而,如果你没有测试数字,我们需要得到更多的创造性。

如果要检查相等的对象是传递的:(也就是,如果(equal? a b)(equal? b c)而不是(equal? a c),则只需在循环中运行check-equal?

代码语言:javascript
复制
(define items (list 'items 'to 'check))
(define compare-item 'correct-item)
(for ([i (in-list items)])
  (check-equal? i compare-item))

当然,如果项目等式不是传递性的,那么您需要检查每一项和每一项。你仍然可以用一个循环来做这件事,它变得更复杂了。然而,一般来说,平等测试项目是传递性的。

票数 1
EN

Stack Overflow用户

发布于 2016-12-11 01:37:13

您可以在check-true中使用更通用的=,因为所有的值都是数字。

代码语言:javascript
复制
#lang racket

(require rackunit)

(check-true (= (add1 1) (* 2 1) (- 3 1) (+ 2 0)))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41082141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档