JUnit Framework

JUnit test framework provides the following important features −

  • Fixtures
  • Test suites
  • Test runners
  • JUnit classes

Fixtures

Fixtures is a fixed state of a set of objects used as a baseline for running tests. The purpose of a test fixture is to ensure that there is a well-known and fixed environment in which tests are run so that results are repeatable. It includes −

  • setUp() method, which runs before every test invocation.
  • tearDown() method, which runs after every test method.

Let’s check one example −

import junit.framework.*;

public class JavaTest extends TestCase {

   protected int value1, value2;

     // assigning the values

   protected void setUp(){     

value1 = 3;      value2 = 3;

   }

   // test method to add two values

public void testAdd(){

      double result = value1 + value2;     

assertTrue(result == 6);

  }

}

 

Test Suites

A test suite bundles a few unit test cases and runs them together. In JUnit, both @RunWith and @Suite annotation are used to run the suite test. Given below is an example that uses TestJunit1 & TestJunit2 test classes.

import org.junit.runner.RunWith;

import org.junit.runners.Suite;

//JUnit Suite Test

@RunWith(Suite.class)@Suite.SuiteClasses({

   TestJunit1.class ,TestJunit2.class})

public class JunitTestSuite {

}

import org.junit.Test;

import org.junit.Ignore;

import static org.junit.Assert.assertEquals;

public class TestJunit1 {

   String message = “Robert”;

MessageUtil messageUtil = new MessageUtil(message);

 

      @Test   public void testPrintMessage() {

      System.out.println(“Inside testPrintMessage()”);

assertEquals(message, messageUtil.printMessage()); 

      }

}

import org.junit.Test;

import org.junit.Ignore;

import static org.junit.Assert.assertEquals;

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());

   }

}

 

Test Runners

Test runner is used for executing the test cases. Here is an example that assumes the test class TestJunit already exists.

import org.junit.runner.JUnitCore;

import org.junit.runner.Result;

import org.junit.runner.notification.Failure;

public class TestRunner {

   public static void main(String[] args) {

      Result result = JUnitCore.runClasses(TestJunit.class);

      for (Failure failure : result.getFailures()) {

         System.out.println(failure.toString());

      }

      System.out.println(result.wasSuccessful());

   }

}