Ruby 使用 Ruby 的单元测试,如何使异常抛出

hgyxbll · 2016年01月07日 · 最后由 davidwei 回复于 2016年02月18日 · 1963 次阅读

在运行单元测试时,结果有问题,推测是代码中出现了异常,但 ut 框架将异常捕获了,然后直接显示测试 fail,其实我想看异常的信息。

请问如何做? 我用的是 minitest 框架

pry 是你的好朋友。

引入 Pry

#Gemfile
group :test do
  gem 'pry'
end

在你的测试文件中打断点

#user_test.rb
test 'jesus loves you' do
  ...
  ...
  ...
  binding.pry
  ...
  ...
end

就可以在断点那个位置愉快的 debug 了。

#1 楼 @xiaoronglv :plus1: @hgyxbll,要是你懒得引入 pry 的话,最原始的办法就是在怀疑有问题的地方 puts,另外如果用 Rubymine 这类的 IDE 的话,直接 debug 方式运行测试吧。

#2 楼 @qinfanpeng 如果测试包含一堆 log,puts 就被淹没在茫茫大海了。这种情况,可以使用系统通知插件,将报错的地方打出来。

#3 楼 @davidwei 有插件推荐吗?用 puts 是我一般先打印一行 "--------------------",然后接着打印自己要看的东西,另外用 asome print 打印的是彩色的,很好辨识的。

MinitTest 捕获异常之后也会打印调用栈,所以这是别的问题。

如果方便的话,贴个具体代码看看吧,描述的这么抽象,不好判断啊

#5 楼 @rei 发现确实是其他方面的问题,minitest 会打印调用栈的

#4 楼 @qinfanpeng 个人使用 Mac 系统,可以使用terminal-notifier. FYI: https://github.com/guard/guard/wiki/System-notifications

需要 登录 后方可回复, 如果你还没有账号请 注册新账号