Difference between revisions of "Junit Example"
From RifidiWiki
(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);
}
}