JUnit is a annotation-based, flexible unit testing framework for the Java Programming Language. JUnit has been important in the development of test-driven development and is one of a family of unit testing frameworks which is collectively known as xUnit. Here are some examples and tutorials to get you started in learning JUnit.
Some tutorials to get you started.
- Basic JUnit test
Testing is critical for building good quality software. We will show you the basics of writing a JUnit Test.
Other JUnit tutorials that help you learn the basics.
- Test Suite
Using Suite as a runner allows you to build a suite containing tests. To create a suite, annotate a class with @RunWith(Suite.class). To add test classes to that suite, annotate the same class and add @SuiteClasses(TestClass.class, …).
- Ignoring a Test
You can Ignore a test either by annotating it with a @Ignore or by deleting the @Test annotation, But the test runner will not report such a test. Better is to use the @Ignore annotation at method or class level.
You can specify a timeout in JUnit, this means that when a test execution is longer than the specified timeout the test method will fail automatically and be marked as a failure. There are two ways to implement a timeout using JUnit.
- Exception Testing
JUnit provides us with a basic toolkit to verify if an exception is thrown. There are some differences in how we can check these exceptions.
- Assumptions with Assume
We can defend our tests by using the org.junit.Assume class. This class offers many static methods, such as assumeTrue(condition) or assumeNotNull(condition) and etc.
- Implement JUnit listener
A JUnit Listener can listen to events of JUnit lifecycle. We can add this listener by creating a custom Runner. Then we use this runner with the @RunWith annotation which will register our JUnit Listener to the test case.
- Parameterized Test
The Parameterized test runner allows you to run a test many times with different sets of parameters. To run a test class with the Parameterized test runner, you must meet the following requirements.
A theory captures some aspect of the intended behavior in possibly infinite numbers of potential scenarios. This means whatever a theory asserts is expected to be true for all data sets.
- Ordered Tests
The JVM does not specify any particular order and could be random. Normally this should not be a problem, cause well written tests would not assume any order, but some do.
- Custom Method Order
By default JUnit does not support to run JUnit tests in method order. JUnit only provides to run ordered method execution by name ascending NAME_ASCENDING or descending JVM.