arnbobo
arnbobo

Reputation: 2535

Class Not Found: Empty Test Suite in IntelliJ

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.

Upvotes: 205

Views: 217058

Answers (30)

JP Navarro V.
JP Navarro V.

Reputation: 41

If you are using various libaries for testing

for example: JUnit and TestNG review your imports, you might have imported

@Test from TestNG instead of @Test from Junit

Human mistake was the reason the test was not being detected and excuted as expected

Upvotes: 0

Basak Balci
Basak Balci

Reputation: 21

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

Upvotes: 0

Ace
Ace

Reputation: 11

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

Upvotes: 0

Maharshi Rawal
Maharshi Rawal

Reputation: 252

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.

Upvotes: 0

Raghu
Raghu

Reputation: 1393

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

Upvotes: 0

Volodymyr Taras
Volodymyr Taras

Reputation: 91

Removing and recreating of run congiguration also helps.

Upvotes: 0

Jangli_coder
Jangli_coder

Reputation: 21

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!

Upvotes: 1

swapnil
swapnil

Reputation: 230

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

Upvotes: 7

Inweo
Inweo

Reputation: 183

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

Upvotes: 3

Luis Camargo
Luis Camargo

Reputation: 91

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

Upvotes: 0

crgarridos
crgarridos

Reputation: 9263

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.

Upvotes: 16

Carlos Daniel
Carlos Daniel

Reputation: 2699

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

Upvotes: 0

Mr Nobody
Mr Nobody

Reputation: 396

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 :-)

Upvotes: 2

Peter Lamberg
Peter Lamberg

Reputation: 8641

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.

Upvotes: 1

some random guy
some random guy

Reputation: 430

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

Upvotes: 5

Micer
Micer

Reputation: 8979

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.

Upvotes: 5

mbo
mbo

Reputation: 4691

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

Upvotes: 6

landerlyoung
landerlyoung

Reputation: 1810

solved by manually run testClasses task before running unit test.

Upvotes: 0

WebComer
WebComer

Reputation: 1181

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.

Upvotes: 1

radekpakula
radekpakula

Reputation: 109

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

Upvotes: 1

Evgeni Atanasov
Evgeni Atanasov

Reputation: 520

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

Upvotes: 0

sobczak.dev
sobczak.dev

Reputation: 1308

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.

Upvotes: 68

Tushar Nallan
Tushar Nallan

Reputation: 784

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

Upvotes: 7

user674669
user674669

Reputation: 12352

I went to

File -> Invalidate Caches/Restart...

and then it worked for me.

Upvotes: 75

vatbub
vatbub

Reputation: 3109

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

Upvotes: 3

bremen_matt
bremen_matt

Reputation: 7349

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'
}

Upvotes: 1

Mukul Aggarwal
Mukul Aggarwal

Reputation: 1585

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

Upvotes: 1

Bejond
Bejond

Reputation: 1198

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

Upvotes: 5

jsmiao
jsmiao

Reputation: 453

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

Upvotes: 0

koders
koders

Reputation: 5794

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

Upvotes: 1

Related Questions