Difference between revisions of "Junit Example"

From RifidiWiki

Jump to: navigation, search
(New page: category:developerDoc 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.)
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
[[category:developerDoc]]
 
[[category:developerDoc]]
 
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.
 
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.
 +
<pre><nowiki>
 +
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() {
 +
 +
        }       
 +
 
 +
}
 +
</nowiki></pre>
 +
 +
<br />
 +
<br />
 +
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.
 +
<pre><nowiki>
 +
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);
 +
 +
 +
}
 +
 +
 +
 +
}
 +
</nowiki></pre>

Latest revision as of 00:45, 14 May 2008

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