No tests found with test runner 'JUnit 4'
My Java test worked well from Eclipse. But now, when I relaunch test from the run menu, I get the following message:
No tests found with test runner 'JUnit 4'
In the .classpath
file I have all jar
files, a开发者_StackOverflow中文版nd at the end have:
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="output" path="bin"/>
</classpath>
How can I resolve this error and get tests running again?
this just happened to me. Rebuilding or restarting Eclipse didn't help.
I solved it by renaming one of the test methods to start with "test..." (JUnit3 style) and then all tests are found. I renamed it back to what it was previously, and it still works.
When we get these errors it seems like Eclipse is just confused. Restart Eclipse, refresh the project, clean it, let Eclipse rebuild it, and try again. Most times that works like a charm.
Check if your test class extends "TestCase". if so, remove that clause. Your class does not need to extend from "TestCase" class. It's most of the cases I've met.
public class MyTestCase extends TestCase{
@Test
public void checkSomething() {
//...
}
}
//Result> AssertionFailedError: No test Found in MyTestCase
Following TestCase should be fine.
public class MyTestCase {
@Test
public void checkSomething() {
//...
}
}
//Works fine
In context menu of your 'test' directory choose 'Build path' -> 'Use as a source folder'. Eclipse should see your unitTests.java files as a source files. Warning 'No JUnit tests found' occures because there is no unitTests.class files in your 'build' directory
I was facing the same problem and I debugged it to bad examples on the web and internals of junit. Basically don't make your class extend TestCase as some examples show for Junit 4.x. Use some naming convention Test or if you want to have an annotation you can use @RunWith(JUnit4.class).
If you need access to assert methods extend Assert or use static imports.
If your class extends TestCase then even if you use Junit 4 Runner it will be run as 3. This is because in the initialization code there is detection:
See JUnit3Builder and the lines:
boolean isPre4Test(Class<?> testClass) {
return junit.framework.TestCase.class.isAssignableFrom(testClass);
}
This returns true and the test for junit4 compatibility won't be tried.
Try Adding
@Test above the method for the test like this
@Test
public void testParse()
{
}
Yet another possible solution I'll throw into the ring: I wasn't able to run the test class either from the editor window, nor the Package Explorer, but right-clicking on the class name in the Outline view and selecting Run As JUnit Test did work... Go figure!
No testsuits in JUnit4. Use annotations instead or use old JUnit3 name conventions.
Example:
@RunWith(Suite.class)
@SuiteClasses({YourClassWithTests.class})
This happened to me as well. I tried restarting Eclipse and also prefixed my test-methods with tests. Neither worked.
The following step worked: Change all your test methods present in @BeforeClass and @AfterClass to static methods.
i.e. if you have your test method in the below format:
@BeforeClass
public void testBeforeClass(){
}
then change it to:
@BeforeClass
public static void testBeforeClass(){
}
This worked for me.
I have found out the answer:
I got this error when I executed the test standalone from eclipse (right click on the method and choose to run as junit test),
When I executed the complete class as junit test the test executed correctly with the parameters.
When I face this problem I just edit the file and save it... works like charm
My problem was that declaration import org.junit.Test;
has disappeared (or wasn't added?). After adding it, I had to remove another import
declaration (Eclipse'll hint you which one) and everything began to work again.
Very late but what solved the problem for me was that my test method names all started with captial letters: "public void Test". Making the t lower case worked.
I tried the solution from Germán. It worked for all the method from my class but i have a lot of classes in my project.
So I tried removing from build path and then re-adding it. It worked perfectly.
Hope it helps.
Six years later ... and there are still problems with Eclipse and occasionally not finding JUnits.
In my Eclipse Mars 2 I discovered that it won't recognise test classes pulled in from git if there are more than 9 or 10 @Test
annotations in the file. I need to comment out any extra tests, run the test class, then uncomment them and re-run the class. Go figure...
May be your JUnit launch configuration was for a individual test class, and you somehow changed that config to "run all tests in a source folder, package or project"
But that could trigger the "No tests found with test runner 'JUnit 4'" error message.
Or you did a modification in your test class, removing the @Test
annotation.
See this wiki page.
What fixed my case was similar to @JamesG's answer: I restarted Eclipse, rebuilt the project, and refreshed it; BUT before I did any of that, I 1st closed the project (right-click project in package explorer -> Close Project) and then re-opened it. Then it worked.
A workaround solution I found before finding that ultimate solution I just described: Copy the test class, and run the test class as JUnit.
Check if the folder your tests are in is a source folder. If not - right click and use as source folder.
Close and open the project worked for me.
There is another chance, you might have changed Junit Test from lower version(e.g. Junit 3) to Junit 4 . Is so follow below steps:-
1. Right Click on class
2. Select Run as >> "Run Configurations"
3. Check your "Test Runner" option in new window
4. If it not same as maven change it for example change it as Junit 4.
Right Click the Project -> Build Dependencies -> remove the ones which have been excluded from the build path -> Click OK
Right Click the Project -> Maven -> Update Project.
You should be good to go..
You can fix this issue by do as following:
- Right click on the folder named 'Test' > Build Path > Use as Source Folder
- Or you can set classpath same as:
<classpathentry kind="src" path="src/test/java"/>
. You replace "src/test/java" by your test package
This issue happened because of junit cannot recognize your source code :D
I've had issues with this recently, which seem to be fixed in the latest Eclipse.
eclipse-java 4.11.0,2019-03:R -> 4.12.0,2019-06:R
Add @Test
on top of your test.
Mouse hover to the annotation.
Chose 'add junit 4 library to classpath'
Is your Eclipse project maven based? If so, you may need to update the m2eclipse version.
Just a quick note: I have a project in Eclipse which is maven-based, and generated initially using the "new maven project" wizard in Eclipse. I'm using JUnit 4.5 for the unit tests, and could quite happily run the tests from the command line using maven, and individual tests from Eclipse using run as JUnit test.... However, when I tried to run all of the tests in the project by invoking run as JUnit test... on the project root node, Eclipse complained "no tests found with test runner junit 4". Solved by upgrading m2eclipse to the latest stable development build from the m2eclipse update site (specifically, I upgraded from version 0.9.8.200905041414 to version 0.9.9.200907201116 in Eclipse Galileo).
From here: http://nuin.blogspot.com/2009/07/m2eclipse-and-junit4-no-tests-found.html
This happened to me too. I found that in Eclipse I didn't make a new Java Class file and so that's why it wasn't compiling. Try copying your code into a java class file if it's not already there and then compile.
I found out that Eclipse seems to only perform JUnit 3 style tests if your test-class extends from TestCase
. If you remove the inheritance, the annotations worked for me.
Beware that you need to statically import all the required assert*
methods like import static org.junit.Assert.*
.
I also faced the same issue while running JUnit test. I resolved this by putting the annotation @Test just above the main test function.
I had to do a mvn clean on command line then project->clean in eclipse. I renamed the class beforehand then renamed it back but i doubt that helped.
I'm also running Eclipse with Maven (m2e 1.4). The tests were running with Maven, but not with Eclipse... even after several application of Maven>Update project
.
My solution was to add some lines in the .classpath generated by m2e. The lines are now sticking.
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
精彩评论