如何让 rackunit 显示堆栈跟踪?
How to get rackunit to display stack trace?
我在我的代码中使用这样的 rackunit
(run-tests (test-suite "suite-name"
(test-case "case name"
...
))
我正在尝试练习 TDD。当一个断言失败时,我能够看到哪个断言失败了。但是如果出现错误,不幸的是 rackunit 只会向我显示遇到的错误和失败的测试用例名称。
如果我正常执行代码,我会看到带有行号的堆栈跟踪。如何让 rackunit 显示此信息?
使用errortrace.
例如下面的程序
#lang racket/base
(require rackunit
rackunit/text-ui)
(define suite
(test-suite "suite-name"
(test-case "case name"
(check-equal? (1) 3))))
(run-tests suite)
产生:
--------------------
suite-name > case name
ERROR
application: not a procedure;
expected a procedure that can be applied to arguments
given: 1
arguments...: [none]
--------------------
0 success(es) 0 failure(s) 1 error(s) 1 test(s) run
1
当你 运行 和 racket test.rkt
.
但是如果我们运行它和racket -l errortrace -t test.rkt
,那么它会产生:
--------------------
suite-name > case name
application: not a procedure;
expected a procedure that can be applied to arguments
given: 1
arguments...: [none]
errortrace...:
/Users/sorawee/racket/test.rkt:9:20: (1)
/Applications/Racket v7.7/share/pkgs/rackunit-lib/rackunit/private/check.rkt:115:13: ((let-values (((...it/private/check.rkt:115:14) check-impl) ((temp3) (idY31 lifted/19 (....))) ((temp4) (quote (....)))) ((checked-procedure-check-and-extract struct:keyword-procedure ...it/private/check.rkt:115:14 keyword-procedure-extract (....) ....)...
/Applications/Racket v7.7/share/pkgs/rackunit-lib/rackunit/private/test-case.rkt:58:2: (let-values (((...rivate/test-case.rkt:58:2) run-test-case5) ((temp1) (lambda () (void) (....))) ((temp2) (lifted/20 (quote ....)))) (if (variable-reference-constant? (#%variable-reference run-test-case5)) (run-test-case temp2 temp1) ((checked-procedure...
/Users/sorawee/racket/test.rkt:11:0: (run-tests suite)
application: not a procedure;
expected a procedure that can be applied to arguments
given: 1
arguments...: [none]
--------------------
0 success(es) 0 failure(s) 1 error(s) 1 test(s) run
1
我在我的代码中使用这样的 rackunit
(run-tests (test-suite "suite-name"
(test-case "case name"
...
))
我正在尝试练习 TDD。当一个断言失败时,我能够看到哪个断言失败了。但是如果出现错误,不幸的是 rackunit 只会向我显示遇到的错误和失败的测试用例名称。
如果我正常执行代码,我会看到带有行号的堆栈跟踪。如何让 rackunit 显示此信息?
使用errortrace.
例如下面的程序
#lang racket/base
(require rackunit
rackunit/text-ui)
(define suite
(test-suite "suite-name"
(test-case "case name"
(check-equal? (1) 3))))
(run-tests suite)
产生:
--------------------
suite-name > case name
ERROR
application: not a procedure;
expected a procedure that can be applied to arguments
given: 1
arguments...: [none]
--------------------
0 success(es) 0 failure(s) 1 error(s) 1 test(s) run
1
当你 运行 和 racket test.rkt
.
但是如果我们运行它和racket -l errortrace -t test.rkt
,那么它会产生:
--------------------
suite-name > case name
application: not a procedure;
expected a procedure that can be applied to arguments
given: 1
arguments...: [none]
errortrace...:
/Users/sorawee/racket/test.rkt:9:20: (1)
/Applications/Racket v7.7/share/pkgs/rackunit-lib/rackunit/private/check.rkt:115:13: ((let-values (((...it/private/check.rkt:115:14) check-impl) ((temp3) (idY31 lifted/19 (....))) ((temp4) (quote (....)))) ((checked-procedure-check-and-extract struct:keyword-procedure ...it/private/check.rkt:115:14 keyword-procedure-extract (....) ....)...
/Applications/Racket v7.7/share/pkgs/rackunit-lib/rackunit/private/test-case.rkt:58:2: (let-values (((...rivate/test-case.rkt:58:2) run-test-case5) ((temp1) (lambda () (void) (....))) ((temp2) (lifted/20 (quote ....)))) (if (variable-reference-constant? (#%variable-reference run-test-case5)) (run-test-case temp2 temp1) ((checked-procedure...
/Users/sorawee/racket/test.rkt:11:0: (run-tests suite)
application: not a procedure;
expected a procedure that can be applied to arguments
given: 1
arguments...: [none]
--------------------
0 success(es) 0 failure(s) 1 error(s) 1 test(s) run
1