Package org.junit.runners
Class Parameterized
- java.lang.Object
-
- org.junit.runner.Runner
-
- org.junit.runners.ParentRunner<Runner>
-
- org.junit.runners.Suite
-
- org.junit.runners.Parameterized
-
- All Implemented Interfaces:
Describable
,Filterable
,Sortable
public class Parameterized extends Suite
The custom runner
For example, to test a Fibonacci function, write:Parameterized
implements parameterized tests. When running a parameterized test class, instances are created for the cross-product of the test methods and the test data elements.@RunWith(Parameterized.class) public class FibonacciTest { @Parameters(name= "{index}: fib({0})={1}") public static Iterable<Object[]> data() { return Arrays.asList(new Object[][] { { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } }); } private int fInput; private int fExpected; public FibonacciTest(int input, int expected) { fInput= input; fExpected= expected; } @Test public void test() { assertEquals(fExpected, Fibonacci.compute(fInput)); } }
Each instance of
FibonacciTest
will be constructed using the two-argument constructor and the data values in the@Parameters
method.In order that you can easily identify the individual tests, you may provide a name for the
@Parameters
annotation. This name is allowed to contain placeholders, which are replaced at runtime. The placeholders are- {index}
- the current parameter index
- {0}
- the first parameter value
- {1}
- the second parameter value
- ...
Parameterized
runner creates names like[1: fib(3)=2]
. If you don't use the name parameter, then the current parameter index is used as name. You can also write:@RunWith(Parameterized.class) public class FibonacciTest { @Parameters public static Iterable<Object[]> data() { return Arrays.asList(new Object[][] { { 0, 0 }, { 1, 1 }, { 2, 1 }, { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } }); } @Parameter(0) public int fInput; @Parameter(1) public int fExpected; @Test public void test() { assertEquals(fExpected, Fibonacci.compute(fInput)); } }
Each instance of
FibonacciTest
will be constructed with the default constructor and fields annotated by@Parameter
will be initialized with the data values in the@Parameters
method.- Since:
- 4.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
Parameterized.Parameter
Annotation for fields of the test class which will be initialized by the method annotated byParameters
By using directly this annotation, the test class constructor isn't needed.
Index range must start at 0.static interface
Parameterized.Parameters
Annotation for a method which provides parameters to be injected into the test class constructor byParameterized
-
Nested classes/interfaces inherited from class org.junit.runners.Suite
Suite.SuiteClasses
-
-
Constructor Summary
Constructors Constructor Description Parameterized(java.lang.Class<?> klass)
Only called reflectively.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.util.List<Runner>
getChildren()
Returns a list of objects that define the children of this Runner.-
Methods inherited from class org.junit.runners.Suite
describeChild, emptySuite, runChild
-
Methods inherited from class org.junit.runners.ParentRunner
childrenInvoker, classBlock, classRules, collectInitializationErrors, filter, getDescription, getName, getRunnerAnnotations, getTestClass, run, runLeaf, setScheduler, sort, validatePublicVoidNoArgMethods, withAfterClasses, withBeforeClasses
-
-
-
-
Method Detail
-
getChildren
protected java.util.List<Runner> getChildren()
Description copied from class:ParentRunner
Returns a list of objects that define the children of this Runner.- Overrides:
getChildren
in classSuite
-
-