Test suite is used to bundle a few unit test cases and run them together.
In JUnit, both @RunWith and @Suite annotations are used to run the suite tests.
This chapter takes an example having two test classes, TestJunit1 & TestJunit2, that run together using Test Suite.
Create a Class
Create a java class to be tested, say, MessageUtil.java
/* * This class prints the given message on console. */ public class MessageUtil { private String message; //Constructor //@param message to be printed public MessageUtil(String message){ this.message = message; } // prints the message public String printMessage(){ System.out.println(message); return message; } // add "Hi!" to the message public String salutationMessage(){ message = "Hi!" + message; System.out.println(message); return message; } }
Create Test Case Classes
Create a java class file named TestJunit1.java
public class TestJunit1 { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message, messageUtil.printMessage()); } }
Create a java class file named TestJunit2.java
public class TestJunit2 { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }
Create Test Suite Class
- Create a java class.
- Attach @RunWith(Suite.class) Annotation with the class.
- Add reference to JUnit test classes using @Suite.SuiteClasses annotation.
Create a java class file named TestSuite.java to execute test case(s).
import org.junit.runner.RunWith; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ TestJunit1.class, TestJunit2.class }) public class JunitTestSuite { }
Create Test Runner Class
Create a java class file named TestRunner.java to execute test case(s).
public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(JunitTestSuite.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
Now run the Test Runner, which will run the test case defined in the provided Test Case class.
Verify the output.
Inside testPrintMessage() Robert Inside testSalutationMessage() Hi Robert true
No comments:
Post a Comment