Parameterised tests that don't suck
NOTE: This is a customised version and might not work as expected. All the original version might not work in this fork. Original Repo: https://github.com/Pragmatists/JUnitParams
List of functionalities removed:
- Filter
- FileParams
- Custom Test Case Name
- Combined Parameters
- Custom Parameters
- source and method options in Parameters Annotation
- Varargs in Test Parameters
- Parameter converters
@RunWith(JUnitParamsRunner.class)
public class PersonTest {
@Test
@Parameters({"17, false",
"22, true" })
public void personIsAdult(int age, boolean valid) throws Exception {
assertThat(new Person(age).isAdult(), is(valid));
}
}
See more examples
- 2017-01-23 JUnitParams 1.0.6 released. Check release info.
JUnitParams project adds a new runner to JUnit and provides much easier and readable parametrised tests for JUnit >=4.6.
Main differences to standard JUnit Parametrised runner:
- more explicit - params are in test method params, not class fields
- less code - you don't need a constructor to set up parameters
- you can mix parametrised with non-parametrised methods in one class
- params can be passed as a CSV string or from a parameters provider class
- parameters provider class can have as many parameters providing methods as you want, so that you can group different cases
- you can have a test method that provides parameters (no external classes or statics anymore)
- you can see actual parameter values in your IDE (in JUnit's Parametrised it's only consecutive numbers of parameters):
JUnitParams is available as Maven artifact:
<dependency>
<groupId>pl.pragmatists</groupId>
<artifactId>JUnitParams</artifactId>
<version>1.0.6</version>
<scope>test</scope>
</dependency>
If you want to see just one simple test class with all main ways to use JUnitParams see here: https://github.com/Pragmatists/junitparams/tree/master/src/test/java/junitparams/usage
You can also have a look at Wiki:Quickstart
Since spring version 4.2 it is possible to integrate JUnitParams and spring. More about this here.