Run unit tests in IntelliJ IDEA from multiple modules together
Select all modules, right-click them and choose to run all tests. This will create a configuration called "Whole Project" which you can run again at any time.
I found this better than the accepted answer because this runs the unit tests separately for each module. If your test cases use module-specific resources during its run-time then the accepted answer's best way won't work.
Select all modules
Right click and choose to run all tests
Get a new run configuration
You have to create a "Run Configuration":
- Go to the dropdown on the top, at the right hand of the "Make" button and click on it
- Select "Edit Configurations"
- Now click on the "+" button to add a new run configuration and select JUnit
- Then, when configuring the "Run Configuration", you'll find a "Test Kind" dropdown, select "All classes in directory"
- Select the directory you want to use as the root, you can choose the top level directory for your project or any of the directories for your modules.
- Select the IntelliJ module from where picking up the classpath (it can be the top level project if it has a classpath)
Best way way: (edit after 3 years)
There is even a better way to achieve this. From the JetBrains JUnit Run Configuration docs:
Select menu "Run" → "Edit Configurations...". Click green plus in left top corner and select JUnit.
Select "Test kind" to "Pattern" and enter this regexp exactly as you see it:
^(?!.*IT$).*$
(it starts with caret^
and ends with dollar$
). This regexp says: all tests that do not finish with IT in their name.Note: The regexp will match against the qualified file names, making it easy to exclude by module/packages as well. If your integration tests are grouped in a package
com.me.integrationtests
, the regex to match everything not in this package would be^(?!.*com\.me\.integrationtests.*).*$
.Select "Search for tests" to "In whole project". Working directory should be set to top module working directory (it should be set by default).
Enter a Name for your test like "All Unit tests". I also prefer to mark "Share" option so this configuration won't disappear later. Click Apply and OK.
You can experiment with this regexp to fit your needs.
Original answer:
It is doable, although it's not comfortable.
- Select first module, right-click on
test/java
directory and "Run All Tests". It creates test configuration. - Select "Edit configurations" and check "Share" on newly created configuration so it will be saved.
- Select second module, "Run All Tests" on it, and check "Share" on this configuration as well.
- In "Before launch" section, click "+" and select "Run Another Configuration" and then select first module's configuration.
This way you run configurations in a sequence and every configuration gets a new tab. Still, better than nothing.
For me both solutions didn't work or didn't work es expected.
For me I have 3 modules. My modules dependencies look like this
Presentation -> Domain -> Data
I just wanted to execute all tests together. So I came up with the 'Across module dependencies' approach
My Settings look like this: