205

I'm just starting the computer science program at my college, and I'm having some issues with IntelliJ. When I try to run unit tests, I get the message

Process finished with exit code 1
Class not found: "edu.macalester.comp124.hw0.AreaTest"Empty test suite.

I also see a message entitled "No tests were found" on the left side of my screen. My test code is here:

package edu.macalester.comp124.hw0;


import org.junit.Test;
import static org.junit.Assert.*;

public class AreaTest {

    @Test
    public void testSquare() {
    assertEquals(Area.getSquareArea(3.0), 9.0, 0.001);
    }

    @Test
    public void testCircle() {
    assertEquals(Area.getCircleArea(3.0), 28.2743, 0.001);
    }
}

And my project code is here:

package edu.macalester.comp124.hw0;

import java.lang.Math;
public class Area {

/**
 * Calculates the area of a square.
 * @param sideLength The length of the side of a square
 * @return The area
 */
public static double getSquareArea(double sideLength) {
    // Has been replaced by correct formula
    return sideLength * sideLength;
}

/**
 * Calculates the area of a circle.
 * @param radius The radius of the circle
 * @return The area
 */
public static double getCircleArea(double radius) {
    // Replaced by correct value
    return radius * 2 * Math.PI;
}

}

How can I get my tests to work? I'm using the most recent version of IntelliJ IDEA CE.

Udith Indrakantha
  • 860
  • 11
  • 17
arnbobo
  • 2,515
  • 2
  • 12
  • 18
  • 9
    So many things can go wrong. For me, it was as simple as typing `mvn clean package` in the terminal. Unsure why IntelliJ imported the project incorrectly at the beginning. – MarkHu Mar 31 '17 at 20:23
  • 1
    For me just make the folder as "test resource root"... – Xin Meng Apr 10 '17 at 11:53
  • Related post - [Why is the Android test runner reporting “Empty test suite”?](https://stackoverflow.com/q/14381694/465053) & [Class not found: Empty test suite when running unit tests in Android Studio](https://stackoverflow.com/q/38056901/465053) – RBT Aug 20 '18 at 05:11
  • Build -> Clean and Build -> Rebuild was enough to me. – gustavoknz Jan 13 '19 at 22:51
  • Check that the tests are not being disabled from compiling in app/build.gradle: `tasks.whenTaskAdded { task -> if(task.name.contains("Test")) { task.enabled = false } }` – Mr-IDE Mar 12 '21 at 10:16
  • Most probably it is "packaging" or "build" issue. I ran main clean package and compiled fine with a test run. – Yasin Bekar Aug 27 '21 at 20:46

42 Answers42

114

Had the same message. I had to remove the Run/Debug configuration.

In my case, I ran the unit test as a local test before. After that I moved my test to the androidTest package and tried to run it again. Android Studio remembered the last run configuration so it tried to run it again as a local unit test which produced the same error.

After removing the config and running the test again it generated a new configuration and worked.

enter image description here

com2ghz
  • 2,706
  • 3
  • 16
  • 27
  • I think in most cases your solution would be the most universal and the least magical. Worked in my project like a charm. – ba3a Sep 11 '17 at 20:22
  • I tried it but it didn't work on its own. I also had to Invalidate the Cashes. `File > Cashes / Restart` – Lukasz Sep 20 '17 at 21:00
  • I tried it and also invalidated the cashes. But still doesn't work. – wings Dec 27 '17 at 11:11
  • This worked for me after I remembered to click the obvious ok button instead of just closing the dialog box :-) – rimsky Feb 07 '18 at 00:07
  • I dont see any "Specific instrumentation runner" entry in my Android Studio. – david Feb 26 '18 at 13:33
  • worked for me, in my case i have different build variant and one of them is just for testing, if i try to run the test from another build variant it fails with no test suite error and adds it to this list, the setting is in run>edit configurations remove them failed items and select apply solved it, no need to restart or invalidate cache – martinseal1987 Jan 09 '19 at 11:38
74

I went to

File -> Invalidate Caches/Restart...

and then it worked for me.

user674669
  • 10,681
  • 15
  • 72
  • 105
68

I had the same issue. I rebuilded project, and it helped me.

Go to Build --> Rebuild Project

After then, if you are using Maven tool, I recommend use option Reimport All Maven Projects


If it not help, try another possible solutions:

  • Go to File-->Invalidate Caches/Restart--> Invalidate and Restart

or:

  • In your Maven project structure src/main/java right click on java directory and select option Mark directory as --> Sources Root

    Similarly do the same with test directory so: src/test/java right click on java directory and select option Mark directory as --> Test Sources Root

or:

  • Go to Run --> Edit Configurations and in section JUnit remove test configurations. Apply changes. After then try to run your tests. New configuration should be created automatically.

or:

  • Go to File --> Project Structure, select Modules, then select your proper module and go to the Paths tab.
    Check options:
    Radio button Use module compile output path should be selected.

    Output path should be inside your project. Also Test output path should be directory inside your project. For example it can look similarly:
    Output path: C:\path\to\your\module\yourModule \target\classes
    Test Output path: C:\path\to\your\module\yourModule \target\test-classes

    Exclude output paths should be deselected.
sobczak.dev
  • 973
  • 7
  • 11
  • 12
    Rebuilding the project (`Build -> Rebuild Project`) was what worked for me. Thank you! – Francisco C. Mar 21 '18 at 20:07
  • This solution worked for me, the last thing about the modules and using an output path. Thanks. – ganjim Nov 10 '18 at 10:50
  • 1
    As a more desperate solution, delete the .idea file and open the project again. You will lose some configuration/settings, however. – RavenMan Nov 22 '18 at 22:27
  • Setting `/src/test/java` as test root, and the `Build -> Rebuild Project` worked for me. Also when the classes containing tests were in package with package name starting with `java.*`, I got Security Exception. – Master Chief Jan 26 '19 at 04:17
  • The problem is that the dependencies were outdated – deldev May 29 '19 at 20:37
  • 1
    It did not help me. – user3791111 Jun 03 '19 at 14:10
  • If you are trying to run a new test case or existing test case was rename, please rebuild the source and check your output/target directory having complied class file. – VirtualLogic Sep 18 '19 at 12:13
20

This might also happen, if your test folder has been imported as a separate module (a small square is shown on the folder icon in the project view).
Remove the module by selecting the test folder in the project view and press DEL.
Then start your test.
If a popup dialog appears with an error message, that no module is selected, specify your root module from the dropdown.

Tobi
  • 2,001
  • 2
  • 27
  • 49
  • 3
    This was my problem also (square on test folder - would not have known what that meant!); to fix, I opened the run configuration and found that "Use class path of module:" was set to the test module. I changed it to the class path of my project instead, and it worked fine. Thanks for pointing out the "separate module" gotcha! – Redboots Nov 30 '17 at 23:40
  • This is exactly what happened to me. I created a Spring project using start.spring.io and opened it. Afterwards I started the SpringBootTest and ran into the the "Class not found: "..."Empty test suite" error. After following your solution and pressing the DELETE button on test folder and recreating run configuration everything was fine. Additional hint: When pressing delete button on test folder a dialog comes up saying something like "no files will be deleted". So no fear pressing the button. – kleenxcoder Nov 21 '18 at 17:24
  • Hey Thank Bro it Worked for me – indrajit narvekar Sep 11 '20 at 05:29
16

In my case, I had everything else in the right place, but I was working on a java library with kotlin. I just forgot to apply the plugin:

apply plugin: 'kotlin-android'

And now it's working as expected now.

crgarridos
  • 8,758
  • 3
  • 49
  • 61
14

I had a similar problem after starting a new IntelliJ project. I found that the "module compile output path" for my module was not properly specified. When I assigned the path in the module's "compile output path" to the proper location, the problem was solved. The compile output path is assigned in the Project settings. Under Modules, select the module involved and select the Paths tab...

Paths tab in the Project Settings | Modules dialog

screenshot

...I sent the compiler output to a folder named "output" that is present in the parent Project folder.

rhgb
  • 4,075
  • 2
  • 21
  • 28
DStanton
  • 141
  • 1
  • 2
11

So, my issue here was with folder names. I had called my code folder Classes 2016/2017, which IntelliJ didn't like. Simply remove the slash (or other offending character in path), re-import the project, and you'll be good to go!

arnbobo
  • 2,515
  • 2
  • 12
  • 18
8

In Android Studio 3.0 +, sometimes UI tests are somehow interpreted as unit tests and it doesn't ask for target deployment selection. You can go to Edit Configuration and mark it as an Integration test and it would start working

Tushar Nallan
  • 784
  • 6
  • 16
  • Also, on Android Studio 3.0.1 the run button next to the test doesn't work. After updating to 3.1 canary 8 it did start working again. – Marc Jan 19 '18 at 10:30
7

If the project has compilation issue then tests might not run. So firstly build project as Build -> Build Project. After successful compilation re-run the test.

If nothing works out then just close the project window and delete project and re-import as Gradle/Maven project which will set everything for you by overriding the existing IntelliJ created files.This will remove invalid cache created.

You can also just invalidate the cache.

File -> Invalidate Caches/Restart

swapnil
  • 230
  • 3
  • 6
6

I had the same problem and rebuilding/invalidating cache etc. didn't work. Seems like that's just a bug in Android Studio...

A temporary solution is just to run your unit tests from the command line with:

./gradlew test

See: https://developer.android.com/studio/test/command-line.html

mbo
  • 4,611
  • 2
  • 34
  • 54
5

I had the same question when I import some jar from Maven, and subsequently, cause the empty-test-suite error.

In my case, it was because the maven resetting the module files. Which I resolved by clearing my default configuration:

  1. Open Project structure with shift-ctrl-alt-s shortcut

Screenshot of PModules Sources

  1. Look at the Modules > Sources and fill the Sources package or test Package.
Richard Slater
  • 6,313
  • 4
  • 53
  • 81
tyrantqiao
  • 319
  • 4
  • 7
5

Deleting .idea and re-importing the SBT project solved this issue for me.

jhegedus
  • 20,244
  • 16
  • 99
  • 167
5

Reimport project or module can solve the issue. I made this issue by renaming package name when developing. But the out path and test output path is the old path. So intellij can't find the class from the old path. So the easiest way is correcting the out path and test output path.

Intellij module setting

Bejond
  • 1,188
  • 1
  • 11
  • 18
5

I had the same issue (Android Studio 3.2 Canary 4) and I tried most of suggestions described in other answers - without any success. Note this happened after I moved the file from test to androidTest folder. It was still shown in run configurations as test instead of instrumented test.

I finally end up with creating a new file:

  1. Create new instrumented test class with different name.
  2. Copy all the code from your class.
  3. Run it.
  4. Delete the old class.
  5. Rename new class to desired name.
Micer
  • 8,731
  • 3
  • 79
  • 73
5

Interestingly, I've faced this issue many times due to different reasons. For e.g. Invalidating cache and restarting has helped as well.

Last I fixed it by correcting my output path in File -> Project Structure -> Project -> Project Compiler Output to : absolute_path_of_package/out

for e.g. : /Users/random-guy/myWorkspace/src/DummyProject/out

some random guy
  • 430
  • 5
  • 9
3

This will also happen when your module- and/or project-jdk aren't properly configured.

Maarten Dhondt
  • 577
  • 1
  • 9
  • 22
3

In my case, IntelliJ didn't compile the test sources for a strange reason. I simply modified the build configuration and added the maven goal clean test-compile in the Before launch section

vatbub
  • 2,713
  • 18
  • 41
3

In my case there was a problem with test name :).

If name was: dummyNameTest then get no tests where found, but in case testDummyName everything was ok

Inweo
  • 173
  • 2
  • 11
2

In your Maven project structure src/main/java right click on java directory and select option Mark directory as --> Sources Root

Similarly do the same with test directory so: src/test/java right click on java directory and select option Mark directory as --> Test Sources Root

Worked for me :-)

Mr Nobody
  • 388
  • 4
  • 11
1

I had the same issue. In my case i had some test classes in a package/folder outside of the main folder. But when i checked the Run configuration, it was always trying to look for classes inside the main folder (and not my packages outside of main) . So if that is the case , you either have to move your packages to where the Run configuration is pointing to. Or change the run configuration to point to your packages.

mykey
  • 1,943
  • 19
  • 13
1

Does your test require an Android device (emulator or hardware)?
If so, it's called an "instrumented test" and resides in "module-name/src/androidTest/java/".
If not, it's called a "local unit test" and resides in "module-name/src/test/java"

https://developer.android.com/training/testing/start/index.html

I got the same error because I had written a local unit test, but it was placed in the folder for instrumented tests. Moving the local unit test to the "src/test/java" folder fixed it for me.

Patrick
  • 1,227
  • 14
  • 17
1

Was getting same error. My device was not connected to android studio. When I connected to studio. It works. This solves my problem.

Aman Srivastava
  • 1,007
  • 1
  • 13
  • 25
1

It's probably because the folder is not set as test source, which can be done via Module Settings > Modules.

koders
  • 5,654
  • 1
  • 25
  • 20
1

For me the project was compiled outside the project. I just change the path. For changing the path (i'm using mac).

  • Go to File --> Project Structure
  • Go to Module on left side.
  • Select Paths, select radio button(use module compile output path)
  • Provide output path and Test output path which is inside your project
  • Deselect Exclude output paths.
  • Go to File --> Click on Invalidate Cache and restart
Mukul Aggarwal
  • 1,515
  • 20
  • 16
1

In my case, the problem was fixed by going into my build.gradle and changing

dependencies {
    testImplementation 'junit:junit:4.12'
}

to

dependencies {
    testCompile 'junit:junit:4.12'
}
bremen_matt
  • 6,902
  • 7
  • 42
  • 90
  • This helped for me too, surprisingly.Looks like it forced a recompile. Tried several cleanups/cache before without help – Dieter Menne Dec 08 '17 at 08:20
  • For what it is worth, the issue for me was fixed like the solution I propose above. However, the reason was that I was using a plugin that did not support the 'implementation' command. So I would suggest that you may want to see if some of your project's plugins have updates as well. Perhaps a better approach would be to update the plugin since Gradle wants to deprecate the "compile" command – bremen_matt Dec 08 '17 at 08:41
1

I tried all solutions but none of them helped. At the end i run test in debug mode and.... it started to work. Maybe some maven's cache was cleared up. It is difficult to say. It works. Try mvn test -X

1

Just click your mouse right button on the file in Projects windows and select

"Run YourTest".

Everything just starts OK now, probably because faulty run configuration is being rebuild anew.

WebComer
  • 1,131
  • 2
  • 19
  • 31
1

This can happen (at least once for me ;) after installing the new version of IntelliJ and the IntelliJ plugins have not yet updated.

You may have to manually do the Check for updates… from IntelliJ Help menu.

ToDo
  • 754
  • 2
  • 17
  • 31
Peter Lamberg
  • 8,151
  • 3
  • 55
  • 69
1

follow the below steps in Intellij (with screenshots for better understanding):

  1. go to Files --> Project structure

enter image description here

  1. navigate to modules and now select the module, in which your Junit test file present and select "Use module compile output path" radio button.

  2. Mention the respective classes folder path, similar to the screenshot attached.

enter image description here

  1. Do apply and Okay. This worked for me!
0

Same issue here using IDEA 15.0.6, and nothing helped except when I renamed the package the test class was in. Afterwards I renamed it back to its original name and it still worked, so the rename action might have cleared some cache.

Alexander Klimetschek
  • 3,585
  • 31
  • 36
0

For me it was because my project was being compiled into a directory outside of the project. In paths the output paths were \production\project_name and \test\project_name which was putting them in C:\production\project_name. Changing them to the full path of the project allowed my tests to access the class files.

0

I had the same issue in my environment also (MacOS). I was using IntelliJ 2016. I had a Java library project (gradle).

What I did was

  1. Opened/exported project from a IntelliJ older version (like IntelliJ14). This happened successfully and I verified it with by making the project and by running a test case.
  2. Then I imported that project again via IntelliJ 2016. After that it worked fine(building and test case running).
udayanga
  • 411
  • 4
  • 12
0

What worked for me was right click on the Project folder -> Maven -> Generate Sources and Update Folders

jsmiao
  • 433
  • 1
  • 5
  • 13
0

solved by manually run testClasses task before running unit test.

landerlyoung
  • 1,693
  • 17
  • 14
0

My fix for this issue was with folder names and paths.

My test were missing /java/ folder for some reason and IntelliJ didn't like that.

so from ../test/com/.. to ../test/java/com/..

and it is ok

Evgeni Atanasov
  • 482
  • 1
  • 5
  • 13
0

First thing, we need to understand why this is happening and the error message is clear:

Process finished with exit code 1 Class not found: "edu.macalester.comp124.hw0.AreaTest"Empty test suite.

So this mainly occurs when after the unit test class was created we run the methods (tests) individually before running them from the class level. That is all

Carlos Daniel
  • 2,459
  • 25
  • 30
0

Mark your package/directory as Test Sources in your IntelliJ IDEA.

Luis Camargo
  • 91
  • 1
  • 4
0

Removing and recreating of run congiguration also helps.

0

I didn't compile the code.

To Fix the issue, I did the following.

Go to Maven -> Click on Execuate Maven Goal

enter image description here

Run the command

mvn test-compile 

and choose the project from the drop down.

Now go and run your test, It will work

Raghu
  • 1,363
  • 1
  • 23
  • 37
0

I had the same issue, none of the solutions worked for me.

You can try the following steps:

  1. Close the project in Intellij IDEA.
  2. Remove the .idea folder in the file explorer and re-open the project.
  3. Run the tests again.
Maharshi Rawal
  • 242
  • 1
  • 7
  • 18
0

I had the same problem, finally, I found a duplicate test class in my project with the same package name and class name.

feng liu
  • 11
  • 4
0

I had the same issue. I used a character which was not an English one, renaming it solved my issue.
Ex. ı -> i.