是否仍然可以在导轨4中使用测试单元?

从Rails 3.2升级到Rails 4之后,我的应用程序正常运行,但我用测试单元编写的测试是一场灾难。

据传Minitest与测试单元“兼容”。 但是,如果我尝试使用(现在捆绑的)Minitest,那么存在一系列差异 – 从assert *语句名称和参数到(很明显)许多其他大事和微妙的事情。

如果我试图避免使用Minitest并尝试将我的测试单元gem保留在我的Gemfile中,则rake测试会爆炸,说,

undefined method 'refute_predicate' for class 'ActiveSupport::TestCase' 

这是因为已经打电话

 require 'rails/test_help' 

🙁

我一直在寻找,但还没有想出任何继续使用测试单元的方法。 唯一的替代方案似乎是(对我们来说,大规模)重构我们的测试代码,因为我们80%的测试都会以某种方式破坏,或者Minitest与测试单元的不兼容性。

然而阅读http://weblog.rubyonrails.org/2013/6/25/Rails-4-0-final/和http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#upgrading-from-rails-3- 2-to-rails-4-0我发现实质上没有提到这一点 – 我觉得必须遗漏一些东西。

是否有可能使Minitest更系统地与测试单元兼容? 或者继续在Rails 4中使用测试单元?

你是否正在inheritance:Test :: Unit :: TestCase而不是ActiveSupport :: TestCase?

也许尝试将minitest_tu_shim添加到您的测试组:

https://github.com/seattlerb/minitest_tu_shim

或确保子类ActiveSupport :: TestCase

是的Rails支持Test :: Unit。 这是它的指南。

http://guides.rubyonrails.org/testing.html

在测试用例上使用全局搜索和替换来更改方法名称。

这是一个集成测试:

 class UserFlowsTest < ActionDispatch::IntegrationTest 

这是一个控制器测试:

 class UsersControllerTest < ActionController::TestCase 

尝试使用rails new app复制自动生成的帮助程序和框架文件,并查看示例。