JUnit's @TestMethodOrder annotation not working
You need to configure correctly your IDE.
Requirements
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.4.0</version>
</dependency>
Do not use JUnit 5 that offers your IDE. If you add it as library, you will get:
No tests found for with test runner 'JUnit 5'
==================== and this exception ===================
TestEngine with ID 'junit-vintage' failed to discover tests
java.lang.SecurityException: class "org.junit.jupiter.api.TestMethodOrder"'s signer information does not match signer information of other classes in the same package
So just include mentioned dependency only and your code will work as you expect:
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class FooServiceIT {
@Test
@Order(1)
public void testUploadSuccess() {
System.out.println("1");
}
@Test
@Order(2)
public void testDownloadSuccess() {
System.out.println("2");
}
@Test
@Order(3)
public void testDeleteSuccess() {
System.out.println("3");
}
}
JUnit result:
1
2
3
I have faced the same issue. But, I found the problem where exactly is on my case. Wrongly import the "Order" class.
Wrong One
import org.springframework.core.annotation.Order;
Right one
*import org.junit.jupiter.api.Order;*
Also, please verify the following five classes with proper import
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
If you have/had JUnit 4, check the import for annotation @Test
: import org.junit.Test;
For JUnit 5 import should be: import org.junit.jupiter.api.Test;
It was my issue for this question