Difference between revisions of "Junit Example"
From RifidiWiki
Line 30: | Line 30: | ||
} | } | ||
+ | } | ||
+ | </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> | </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); } }