Junit Example

From RifidiWiki

Revision as of 00:45, 14 May 2008 by Jmaine (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Junit 4.x may be tricky at first to build test suites or regular tests, but they are pretty easy to write once one gains a hang of it.

Here is an example of a regular test class.

import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

public class Example {
    @BeforeClass
	public static void setUpBeforeClass() throws Exception {
              /* things to do before running tests */
        }

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
              /* things to do after running tests */
        }
        
	@Test
	public void testExample1() {

        }

	@Test
	public void testExample2() {

        }        
   
}



Here is an example of a test suite. This class can be subclassed to create sub-suites to keep from writing boiler plate code over and over.

import java.util.ArrayList;

import org.junit.runner.Description;
import org.junit.runner.RunWith;
import org.junit.runner.Runner;
import org.junit.runner.notification.RunNotifier;
 
/*
 * This is the runner class for the entire test suite. 
 * All we do here is to add the sub suites here.
 * 
 * This class can be subclassed to create subsuites.
 * Note the run with annotation is needed for each subsuite.
 * And each subsuite must have a constructor with a signature of
 * public [constructor] (Class<?> klass)
 */
@RunWith(SuiteExample.class)
public class SuiteExample extends Runner {
	protected Description description;
	protected ArrayList<Runner> runners;
	
	public ReaderTests()
	{
		runners = new ArrayList<Runner>();
	};
	
	public ReaderTests (Class<?> klass)
	{
		this();
		
		runners.add(Request.aClass(Example.class).sortWith(this).getRunner());
		
		
		description = Description.createSuiteDescription("Rifidi Junit Test Suite");
		
		addRunnersToDescription();
	}

	/* call this method in the constructor of the subclass
	 * to add the runners to the description
	 */
	protected void addRunnersToDescription()
	{
		for(Runner run : runners)
		{
			description.addChild(run.getDescription());
		}
	}
	
	@Override
	public Description getDescription() {
		
		return description;
	}

	@Override
	public void run(RunNotifier notifier) {
		
		notifier.fireTestStarted(description);
		for (Runner run : runners)
		{
			notifier.fireTestStarted(run.getDescription());
			run.run(notifier);
			notifier.fireTestFinished(run.getDescription());
		}
		notifier.fireTestFinished(description);
		
		
	}
	

	
}
Personal tools