Unit testing 多值PLT球拍测试用例

Unit testing 多值PLT球拍测试用例,unit-testing,scheme,Unit Testing,Scheme,我似乎无法使用testengine/rackettests包测试我在PLT Racket中编写的函数 代码如下所示。它返回多个值(不确定它们为什么不称为元组) 问题是使用以下格式测试它。以下是我尝试过的一些 (check-expect (values (euclid-ext 99 78)) (values 3 -11 14)) (check-expect (euclid-ext 99 78) (values 3 -11 14)) (check-expect (list (euclid-ext 9

我似乎无法使用
testengine/rackettests
包测试我在PLT Racket中编写的函数

代码如下所示。它返回多个值(不确定它们为什么不称为元组)

问题是使用以下格式测试它。以下是我尝试过的一些

(check-expect (values (euclid-ext 99 78)) (values 3 -11 14))
(check-expect (euclid-ext 99 78) (values 3 -11 14))
(check-expect (list (euclid-ext 99 78)) (list 3 -11 14))

现在,这会产生错误
上下文预期的1个值,收到3个值:3-11 14
。无论我如何尝试(使用列表、值、无值等),我都无法成功评估此测试用例。

看起来测试框架不接受值。我想您会发现使用列表作为返回值不会那么痛苦

但是,如果您真的想这样做,您可以使用以下内容将
转换为列表:

(call-with-values (lambda () (values 1 2 3)) list)
(check-expect (call-with-values (lambda () (euclid-ext 99 78)) list)
              (list 3 -11 14))
所以测试应该是这样的:

(call-with-values (lambda () (values 1 2 3)) list)
(check-expect (call-with-values (lambda () (euclid-ext 99 78)) list)
              (list 3 -11 14))

看起来测试框架不接受值。我想您会发现使用列表作为返回值不会那么痛苦

但是,如果您真的想这样做,您可以使用以下内容将
转换为列表:

(call-with-values (lambda () (values 1 2 3)) list)
(check-expect (call-with-values (lambda () (euclid-ext 99 78)) list)
              (list 3 -11 14))
所以测试应该是这样的:

(call-with-values (lambda () (values 1 2 3)) list)
(check-expect (call-with-values (lambda () (euclid-ext 99 78)) list)
              (list 3 -11 14))

测试引擎
库用于学生代码,因此它不处理多个值(大多数课程都不处理)。类似于Rackunit库的东西更适合这种情况。

测试引擎库用于学生代码,因此它不处理多个值(大多数课程都不处理)。类似Rackunit库的东西更适合这种情况。

谢谢您的建议,我将尝试使用列表。我这样做是因为返回元组很方便。你能用列表做类似的事情吗?但无论如何,还是要感谢您提供的解决方案。:)我不确定这是否是对您所问问题的回答,但您可以使用类似的方法返回一个包含三个值的列表:
(定义(示例)(列表3-11-14))
。因此,您可以返回
(值dy(-x(*(商ab)y))
,而不是返回
(列表dy…
。感谢您的建议,我将尝试使用列表。我这样做是因为返回元组很方便。你能用列表做类似的事情吗?但无论如何,还是要感谢您提供的解决方案。:)我不确定这是否是对您所问问题的回答,但您可以使用类似的方法返回一个包含三个值的列表:
(定义(示例)(列表3-11-14))
。因此,您不必返回
(值dy(-x(*(商ab)y))
,而可以返回
(列表dy…
。感谢您的推荐。下次我会用那个图书馆。谢谢你的推荐。下次我要用那个图书馆。