首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在EUnit中未输出异常堆栈跟踪

在EUnit中未输出异常堆栈跟踪
EN

Stack Overflow用户
提问于 2012-05-09 10:52:37
回答 4查看 986关注 0票数 7

我正在用EUnit编写一个测试,但没有在控制台中输出任何异常详细信息。

代码语言:javascript
复制
exp_test() ->
  ?assertEqual(0, 1/0).

在Erlang Shell输出中运行此module:exp_test(),如下所示

代码语言:javascript
复制
** exception error: bad argument in an arithmetic expression
 in function  exp_test:'-exp_test/0-fun-0-'/1 (src/test/eunit/xxx_test.erl, line 8)

但是在下面的EUnit输出中

代码语言:javascript
复制
> eunit:test(xxx).
> xxx_test: exp_test...*failed*
  ::badarith

EUnit不输出任何异常跟踪信息

我正在尝试eunit中的详细配置,但没有效果。

我想在eunit测试结果中输出一些异常细节。

谢谢~

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-09 13:32:12

Eunit非常旧,虽然它是由爱立信的OTP团队正式维护的,但通常没有人关心它。Eunit目前有吃掉堆栈跟踪的坏习惯,并且在异常情况下没有更新R15的行号。

我不认为“这就是它应该是如何工作的”。任何明智的测试工具都不应该为您隐藏异常详细信息和行号。

票数 4
EN

Stack Overflow用户

发布于 2012-05-10 17:42:24

问题似乎是R15附带的eunit版本不理解R15中的新堆栈跟踪格式。在eunit的开发版本中已经修复了这个问题: github.com/richcarl/eunit

例如:

代码语言:javascript
复制
Eshell V5.10 (abort with ^G)
1> eunit:test(fun() -> (fun() -> exit(foo), ok end)() end).
erl_eval: expr...*failed*
in function erl_eval:do_apply/6 (erl_eval.erl, line 576)
in call from erl_eval:exprs/5 (erl_eval.erl, line 118)
**exit:foo

我希望这能在下一个版本的动态口令R15中实现。

票数 7
EN

Stack Overflow用户

发布于 2012-06-23 01:22:55

这是在R15B和R15B01中发布的eunit中的一个已知问题。在release R15B02中已修复此问题。如果您坚持使用早期版本,您可以下载并应用a patch

R15B02之前版本的解决方法

您可以通过重新编译受影响的模块来修复本地安装中的问题:

  1. 下载并解压缩Erlang/OTP源代码,如果您还没有这些源代码的话。

wget http://www.erlang.org/download/otp_src_R15B01.tar.gz tar xzf otp_src_R15B01.tar.gz cd otp_src_R15B01

eunit-stacktrace.patch

cd lib/eunit erlc -o ebin -I包括覆盖旧eunit_lib.beam的新eunit_lib.beam(通常在/usr/local下的某个位置)。

ls /usr/local/lib/erlang/lib/eunit-2.2.2/ebin/ #检查eunit_lib.beam是否确实存在sudo cp ebin/eunit_lib.beam /usr/local/lib/erlang/lib/eunit-2.2.2/ebin/

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10509238

复制
相关文章

相似问题

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