RubyMine comes with a testing suite for running RSpec, Minitest, Cucumber, and other tests based on your current context, and working with them in a friendly graphical user interface. Let’s see how it works in the following example.
Once your database and test environment are all set up, you can run all tests in your application, directory, or file, or even run any specific test. Simply navigate to the desired scope, and choose Run test(s)… from the context menu. Alternatively, use the keyboard shortcut Ctrl+Shift+R on Mac or Ctrl+Shift+F10 on Linux/Windows:
When you run a test in RubyMine for the first time, the IDE creates a temporary run configuration for it. You can access and edit it, or create a new test configuration in the Toolbar:
In the Run/Debug Configuration dialog, you can add additional Ruby arguments, environment variables, and other options to specify the way you want to run your tests:
As soon as you run a test, RubyMine opens the Run Tool Window where you can see the results and navigate to any of them by double-clicking the test icon. Alternatively, you can invoke the context menu and choose Jump to Source:
Some other options, such as sorting and exporting tests, are also available from the Run Tool Window.
Rerun Failed Tests
In the previous major release, we announced a useful ability to rerun only failed tests. This feature comes in handy when you’re debugging or fixing tests, and you want to rerun only the failed ones, instead or rerunning all of them. This takes just one click:
RubyMine 2018.3 also adds a handy gutter at each test method. These gutters are visual anchors that show you every particular test that can be run in a file. They also help you run tests faster than from the context menu. Again, one click is all you need:
Navigate to tests and back
Finally, RubyMine provides a way to quickly navigate from a test subject, like a controller or a model, to its test, and back. To do so, go to Navigate | Test / Test Subject or press ⌘⇧T / Ctrl+Shift+T:
By the way, if a test file doesn’t exist, RubyMine will suggest creating one based on the test framework you are using, and will navigate to the newly created test file. Even if a gem for the desired test framework is missing in your app, the IDE will first install it, and then create the missing test file:
Your RubyMine Team