我使用Minitest作为我的功能测试的跑步者,使用Selenium作为运行浏览器的驱动程序。每个测试都建模为MiniTest :: Unit :: TestCase。
Minitest报告完成执行所有测试后的执行摘要。遇到的异常也会在执行结束时打印出来。当发现执行上下文丢失时,我发现很难调试意外失败。我遇到的例外不是确定性的。
有没有办法让Minitest运行器停止执行异常或断言失败的测试?
我正在使用minitest(2.11.2)和ruby 1.9.2p290(2011-07-09)[i386-mingw32]
答案 0 :(得分:3)
我认为您的意思是提供“快速失败”选项。我找到了fail_fast for minitest (Test::Unit): Immediate backtrace & exit文章,但这已经过时了(仍然涵盖了可以做的事情)。我认为你需要monkeypatch你的测试库来启用这个选项。我发现了一个Gist,展示了add a simple fail-fast option to minitest/turn/minitest-rails
如何让你走上正轨。我理解你的问题与我引用的第一篇文章有关:
当我在Ruby on Rails 3项目中运行Test :: Unit套件时
rake test
并且测试失败,默认行为就是 打印“F”或“E”,继续运行直到所有测试完成(同时 我扭动了我的拇指),然后才打印出一堆痕迹。
答案 1 :(得分:2)
当我回答here时,我找到了一个宝石:minitest-fail-fast。它适用于Rails 4.2和Minitest 5.6.1
答案 2 :(得分:2)
尝试rails test -f
即可。这意味着中止第一次失败或错误的测试运行。
答案 3 :(得分:1)
它不能直接回答问题,但可能非常有用。
您可以使用 async function test(){
var length = 3;
for(var a=0; a<length; a++){
var link = 'https://'+hostname+'/';
var apiUrl = 'api/xxx';
var token = "123";
let res = await axios.create({
baseURL: link,
timeout: 60000,
headers: {
Authorization: token
}
}).post(apiUrl, {
...
});
/* Do whatever you need with res */
}
window.location.replace("https://"+hostname+"/abc");
}
gem,这样,只要出现问题,您的测试就会启动撬动会话。您要做的就是将gem添加到您的Gemfile中:
pry-rescue
然后使用以下标志启动测试:
group :development, :test do
gem 'pry-rescue'
end
答案 4 :(得分:0)
使用-f
。
按照您的要求,在纯红宝石中,这意味着ruby <file> -f
。
在轨道中,这表示rails test -f
。
Minitest将检查终端的-f
标志参数,因此您如何调用它似乎与-f
标志无关。