2

In my entities I have bidirectional one-to-many relation and I would like to write integration tests with mock.mvc. However, before adding parent, I cannot add child. For this reason, I would like to order my test classes like first run AirportControllerTest, secondly RouteControllerTest and lastly FlightController.

Is it possible, or how to handle such case ?

Aksoy
  • 91
  • 1
  • 8

1 Answers1

1

For this specific problem, a hierachical order is better than a sequential order.

If you are using JUnit 5, you can use @Nested tests. https://junit.org/junit5/docs/current/user-guide/#writing-tests-nested

Nest your Test classes in a way that the Parent Test class runs first and the nested Test can use the test objects created by the parent.

Here is a high-level example:

class AirportControllerTest{

    @Test
    void testAirportController() {
       //Add parent here
    }

    @Nested
    class RouteControllerTest {
      
        @Test
        void testRouteController() {
           //Use test objects from parent here
        }
        @Nested
        class FlightControllerTest{
      
           @Test
           void testFlightController() {
              //Use test objects from AirportControllerTest & RouteControllerTest 
            }
    }
}

If you are using JUnit 4, you can enclose your Test Classes in a Test Suite. This answer is a good match - https://stackoverflow.com/a/42600619/6352160

Less relevant: For configuring the Test Method order within a Test Class.

If you are using JUnit5, specify @TestMethodOrder in your Test class and use @Order annotation on methods to specify their order of execution. Reference - https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/TestMethodOrder.html.

If using JUnit4, this question has several possible solutions - How to run test methods in specific order in JUnit4?

Shankar
  • 2,625
  • 3
  • 25
  • 49
  • 1
    if I am not wrong it orders the test methods inside a class, what I want to do is to order test Classes – Aksoy Feb 04 '21 at 06:03
  • @YektaAnılAksoy I just realized that I read the question wrong. My first answer was for ordering the Test methods. I edited the answer. – Shankar Feb 05 '21 at 01:30