如何查看测试和断言的数量

时间:2018-09-17 17:46:05

标签: unit-testing racket

我正在使用rackunit编写单元测试,如下所示:

(module+ test
  . . .
  (test-case ":edge"
    (let ([g (make-graph '(:edge ((:node letter a) out)
                                  ((:node letter b) in)))])
      (check-equal? (all-edges g) (set (set '(a out) '(b in))))))
  (test-case ":edge betw refs"
    (let ([g (make-graph 'a 'b '(:edge (a out) (b in)))])
      (check-equal? (all-edges g) (set (set '(a out) '(b in))))))
  . . .
  )

当我在DrRacket中运行源文件并且所有测试通过时,它不会打印任何内容。仅在出现错误时才打印某些内容。

当我运行raco test <source-file>时,它会打印:     49项测试通过 但没有断言的数量。

如何获取DrRacket和raco test来同时打印测试用例和断言的数量?

我想总是看到测试用例的数量和断言的数量,因为这是对我刚刚添加的测试或断言是否真的运行的很好的快速确认:该数量比前一个增加运行。

1 个答案:

答案 0 :(得分:1)

事实证明,“测试”一词在此稍有重载。为此,请尝试使用raco test运行以下代码:

#lang racket

(require rackunit)

(define (f x) x)

(check-equal? (f 3) 3)
(check-equal? (f 3) 4)

请注意,此代码中没有使用“测试用例”。但是,在 命令行产生输出:

raco test: "/tmp/gg.rkt"
--------------------
FAILURE
name:       check-equal?
location:   gg.rkt:8:0
actual:     3
expected:   4
--------------------
1/2 test failures

也就是说,在没有test-casetest-suite形式的情况下,每次使用check-equal?都被视为测试。确实,我想我认为这种轻量级用法是更常见的用法,我应该注意,可以将消息与check-equal?的这些用法相关联。

这并不能直接回答您的问题,但是我认为这可以解释为什么当前未实现您要查找的功能(AFAICT)。如果您想要这样的东西,我认为您最好的选择就是自己实现它。要获得更权威的答案,我将在racket mailing list上提出这个问题。