Create JUnit Test Suite with Example: @RunWith @SuiteClasses

In Junit, test suite allows us to aggregate all test cases from multiple classes in one place and run it together.

To run the suite test, you need to annotate a class using below-mentioned annotations:

  1. @Runwith(Suite.class)
  2. @SuiteClasses(test1.class,test2.class……) or@Suite.SuiteClasses ({test1.class, test2.class……})

With above annotations, all the test classes in the suite will start executing one by one.

Steps to create Test Suite and Test Runner

Step 1) Create a simple test class (e.g. MyFirstClassTest) and add a method annotated with @test.

Steps to Create Test Suite and Test Runner

Step 2) Create another test class to add (e.g. MySecondClassTest) and create a method annotated with @test.

Steps to Create Test Suite and Test Runner

Step 3) To create a testSuite you need to first annotate the class with @RunWith(Suite.class) and @SuiteClasses(class1.class2…..).

Steps to Create Test Suite and Test Runner

Step 4) Create a Test Runner class to run our test suite as given below;

Steps to Create Test Suite and Test Runner

Code Explanation:

  • Code Line 8: Declaring the main method of the class test which will run our JUnit test.
  • Code Line 9: Executing test cases using JunitCore.runclasses which takes the test class name as a parameter (In the example above, you are using TestSuiteExample.class shown in step 3).
  • Code Line 11: Processing the result using for loop and printing out failed result.
  • Code Line 13: Printing out the successful result.

Output: Here is the output which shows successful test with no failure trace as given below:

Steps to Create Test Suite and Test Runner

JUnit Test Suite Example

Consider a more complex example

JunitTest.java

JunitTest.java is a simple class annotated with @RunWith and @Suite annotations. You can list out number of .classes in the suite as parameters as given below:

package guru99.junit;		
import org.junit.runner.RunWith;		
import org.junit.runners.Suite;		

@RunWith(Suite.class)				
@Suite.SuiteClasses({				
  SuiteTest1.class,
  SuiteTest2.class,  			
})		

public class JunitTest {				
			// This class remains empty, it is used only as a holder for the above annotations		
}

SuiteTest1.java

SuiteTest1.java is a test class having a test method to print out a message as given below. You will use this class as a suite in above mentioned class.

package guru99.junit;		

import static org.junit.Assert.assertEquals;				

import org.junit.Test;		

public class SuiteTest1 {				

    public String message = "Saurabh";							

    JUnitMessage junitMessage = new JUnitMessage(message);							

    @Test(expected = ArithmeticException.class)					
    public void testJUnitMessage() {					

        System.out.println("Junit Message is printing ");					
        junitMessage.printMessage();			

    }		

    @Test		
    public void testJUnitHiMessage() {					
        message = "Hi!" + message;							
        System.out.println("Junit Hi Message is printing ");					
        assertEquals(message, junitMessage.printHiMessage());					
        System.out.println("Suite Test 2 is successful " + message);							
    }		
}		

SuiteTest2.java

SuiteTest2.java is another test class similar to SuiteTest1.java having a test method to print out a message as given below. You will use this class as suite in JunitTest.java.

package guru99.junit;		

import org.junit.Assert;		
import org.junit.Test;		

public class SuiteTest2 {				
   	

    @Test		
    public void createAndSetName() {					
        		

        String expected = "Y";					
        String actual = "Y";					

        Assert.assertEquals(expected, actual);					
        System.out.println("Suite Test 1 is successful " + actual);							
    }		

}		

Output

After executing JunitTest.java which contains a suite having test1.java and test2.java, you will get below output:

SuiteTest2.Java Output

SuiteTest2.Java Output

Summary

In this tutorial, you have learned basics of test harness and test suites in details with an example.

  • Test harness or automation Testing is a software or a collection of software, which allows a user to test data with multiple inputs and control the execution
  • Test harness actually enables a test framework that does all the work of executing tests using a test library and generating a test report
  • In Junit, test suite allows us to aggregate all test cases of many classes in one place and run it together.