Excluding tests from being run in IntellIJ
Solution 1
In the JUnit
Run configuration set the Test kind
to Pattern, specify the following regular expression as the pattern:
^(?!.*IT$).*$
It matches against the class name, so you don't need to match .java
extension. Regular expression will not match if the class name ends with IT
using the negative lookahead.
Solution 2
With JUnit5, you can now tag your tests, e.g: @Tag("integration-test")
.
Also, given IntelliJ supports now JUnit5 as well, you can then create a JUnit Test Configuration and select Test Kind: Tags (JUnit5)
.
To exclude let's say "integration-test", you just need to specify as tags:
!integration-test
, and IntelliJ will run all your JUnit5 tests except the ones tagged with integration-test
.
Solution 3
I would split them to that they are in different packages. They are doing different things after all. You can then run your tests per package. This link details how to do this.
user626912
Updated on June 20, 2020Comments
-
user626912 almost 4 years
Is it no option to exclude some tests in IntelliJ IDEA Ultimate? I want to run unit tests in IntelliJ but exclude the integration tests. I name the integration tests with
*IT.java
so the Maven failsafe plugin can run them seperatly from the unit tests. -
Vadzim over 10 yearsThanks for the tip! This works fine in IDEA, but causes all tests to be skipped under TeamCity. It seems that TeamCity 8.0.4 doesn't honor Pattern configurations at all. Should I file an issue?
-
Gary about 7 yearsUse pattern
^(?!(.*SlowTest$|.*SlowSpec$)).*$
to omit both slow Junit tests and Spock tests named with convention of.*SlowTest
and.*SlowSpec
-
lcnicolau almost 6 yearsTake a look at this answer for details (including screenshot).
-
Bohemian over 2 yearsbtw, regex can be simplified to
.*(?<!IT)$