在运行测试之前,“rake测试”做了什么?为什么需要这么长时间?
问题描述:
我有一个轨道应用程序,使用默认的轨道测试约40个测试:单位。测试本身运行速度很快,但延迟时间大约为8秒,其中rake test
似乎在后台执行某些操作,然后运行测试。在运行测试之前,“rake测试”做了什么?为什么需要这么长时间?
我正在使用linux来运行测试。
在调用rake test
之后,但在测试运行之前,这段时间发生了什么?有没有办法减少或消除这个等待时间?
这是一个screenr video照亮这个问题。有问题的时间是0:04 - 0:11。
答
我想它是加载轨道环境(运行您的初始化程序,加载您的模型和控制器等)。我觉得这个速度很慢,特别是在Windows机器上,尤其是在jRuby上(它也必须启动JVM)。
还有是加速jRuby的方式,列出了here,但在Windows上ruby与OSX或linux相比似乎仍然很慢。
编辑:刚才看到你的视频。你等待不到10秒。与20多秒钟相比,我在Windows机器上获得的并不是那么糟糕。
您的应用程序中的代码越多,使用的gem越多,启动rails所需的时间越长,我倾向于使用rake来运行测试,将启动两次,一次在rake文件中,然后再次在测试帮助程序中启动;我倾向于使用rspec - 'bundle exec rspec spec'并绕过耙子,你可以做类似minitest? – house9
您可以使用Spork https://github.com/sporkrb/spork避免为每次测试运行加载Rails环境。 –