junit: no tests found

JavaJunitIntellij Idea

Java Problem Overview


I have inherited a Java project and am new to Java development. I feel a good way for me to get comfortable with the code is to write some tests around it. I'm writing my code using IntelliJ.

My existing project has a folder structure like this:

/myProject
  /src
    /main
      /java
        /com.lexcorp
          /core
            /email
              /providers
                emailProvider.java

I created a new project that will hold tests for this project. I would like this project to hold both unit and integration tests. Currently, my new project has a structure like this:

/myProjectTests
  /src
    /main
      /java
        /com.lexcorp.core.email.providers
          emailProviderTest.java

The emailProviderTest.java file looks like the following:

package com.lexcorp.core.email.providers;

import junit.framework.TestCase;
import org.junit.Test;

public class EmailProviderTest extends TestCase {

    private final String username = "[testAccount]";

    private final String password = "[testPassword]";

    @Test
    public void thisAlwaysPasses() {
        assertTrue(true);
    }
}

This project has a Run/Debug configuration with the following properties:

  • Test kind: All in package
  • Search for tests: In whole project

When I run this configuration, I get an error that says:

junit.framework.AssertionFailedError: No tests found in com.lexcorp.core.email.providers.EmailProviderTest
	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84)
	at org.junit.runners.Suite.runChild(Suite.java:127)
	at org.junit.runners.Suite.runChild(Suite.java:26)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:202)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

I do not understand why I'm getting an error that boils down to: "No tests found". While my project structures differ, the folder structures on the OS match (which is another thing that confuses me). Why am I getting this error and how do I fix it?

Java Solutions


Solution 1 - Java

I was getting this error, too:

> junit.framework.AssertionFailedError: No tests found in ...

The reason was that I forgot to specify

defaultConfig {
    ...
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

After syncing the project, it found the tests. So maybe it helps someone else.

Solution 2 - Java

Extending junit.framework.TestCase is the old JUnit 3 approach of implementing test cases which doesnt work as no methods start with the letters test. Since you're using JUnit 4, just declare the class as

public class EmailProviderTest {

and the test method will be found from the @Test annotation.

Read: JUnit confusion: use 'extend Testcase' or '@Test'?

Solution 3 - Java

I was getting this too:

> junit.framework.AssertionFailedError: No tests found in ...

Solved by renaming the test method from method1

@Test
public void method1(){
    // Do some stuff...
}

to testMethod1

@Test
public void testMethod1(){
    // Do some stuff...
}

Solution 4 - Java

if you are using jUnit 4 then not use extends TestCase, removing this fixed error.

Solution 5 - Java

I had the same issue, in Intellij IDEA, for Java framework. I was doing all right:

  • the class inherited from TestCase
  • I've imported junit.framework.TestCase
  • I've add the decoration @Test

But I did one thing wrong: the name of the method didn't start with "test", in fact was:

@Test
public void getSomethingTest(){

and when I changed it into:

@Test
public void testGetSomethingTest(){

I've resolved: the executor was finally able to recognize this method as a test method. I've changed nothing else.

Solution 6 - Java

I bumped into the situation in JUnit 5 when created a private method:

import org.junit.jupiter.api.Test

class Test1 {

    @Test
    private fun sort() {
        println("1")
    }
}

Remove private.

Solution 7 - Java

I had it when using data provider and one of the parameters had a new line character, like this:

@DataProvider
public static Object[][] invalidAdjustment() {
    return new Object[][]{
            {"some \n text", false},
            };
}

Removing the \n solved the issue

Solution 8 - Java

In my case, I needed junit4-version.jar in the classpath of the task junit and also:

ant-version.jar
ant-junit-version.jar
ant-junit4-version.jar

at the library of my ant installation (/usr/share/ant/lib).

I was getting the error "junit.framework.AssertionFailedError: No tests found in ..." while I hadn't had ant-junit4-*version*.jar in the right place.

I corrected this by installing ant-optional debian/ubuntu package:

apt-get install ant-optional

Solution 9 - Java

I was fretting with this and none of the answers helped me until i moved the test source file from this folder:

src/test/java/com/junit/test

up to this folder:

src/test/java/com/junit

Solution 10 - Java

The other reason generally i see people having method parameters, remove any parameters you might have in the test method, regardless you add @Test annotation , you need to have your method name starting "test" in order for Junit to pick you testcase. hope it helps.

Solution 11 - Java

Test method name public void testName() {}

Where name() in source naming name methods.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJQuery MobileView Question on Stackoverflow
Solution 1 - JavaBlackRainbowView Answer on Stackoverflow
Solution 2 - JavaReimeusView Answer on Stackoverflow
Solution 3 - JavalidoxView Answer on Stackoverflow
Solution 4 - Javauser1865456View Answer on Stackoverflow
Solution 5 - JavaRobyBView Answer on Stackoverflow
Solution 6 - JavaCoolMindView Answer on Stackoverflow
Solution 7 - JavaAndrey MarchukView Answer on Stackoverflow
Solution 8 - JavaLincolnView Answer on Stackoverflow
Solution 9 - JavaKen CoppersmithView Answer on Stackoverflow
Solution 10 - JavaPravin BansalView Answer on Stackoverflow
Solution 11 - JavaFortranView Answer on Stackoverflow