1*b2c653efSSorin Basca<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2*b2c653efSSorin Basca<!-- NewPage --> 3*b2c653efSSorin Basca<html lang="pl"> 4*b2c653efSSorin Basca<head> 5*b2c653efSSorin Basca<!-- Generated by javadoc (1.8.0) on Mon Jul 28 12:08:59 CEST 2014 --> 6*b2c653efSSorin Basca<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7*b2c653efSSorin Basca<title>JUnitParamsRunner (JUnitParams 1.0.3-SNAPSHOT API)</title> 8*b2c653efSSorin Basca<meta name="date" content="2014-07-28"> 9*b2c653efSSorin Basca<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style"> 10*b2c653efSSorin Basca<script type="text/javascript" src="../script.js"></script> 11*b2c653efSSorin Basca</head> 12*b2c653efSSorin Basca<body> 13*b2c653efSSorin Basca<script type="text/javascript"><!-- 14*b2c653efSSorin Basca try { 15*b2c653efSSorin Basca if (location.href.indexOf('is-external=true') == -1) { 16*b2c653efSSorin Basca parent.document.title="JUnitParamsRunner (JUnitParams 1.0.3-SNAPSHOT API)"; 17*b2c653efSSorin Basca } 18*b2c653efSSorin Basca } 19*b2c653efSSorin Basca catch(err) { 20*b2c653efSSorin Basca } 21*b2c653efSSorin Basca//--> 22*b2c653efSSorin Bascavar methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10}; 23*b2c653efSSorin Bascavar tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; 24*b2c653efSSorin Bascavar altColor = "altColor"; 25*b2c653efSSorin Bascavar rowColor = "rowColor"; 26*b2c653efSSorin Bascavar tableTab = "tableTab"; 27*b2c653efSSorin Bascavar activeTableTab = "activeTableTab"; 28*b2c653efSSorin Basca</script> 29*b2c653efSSorin Basca<noscript> 30*b2c653efSSorin Basca<div>JavaScript is disabled on your browser.</div> 31*b2c653efSSorin Basca</noscript> 32*b2c653efSSorin Basca<!-- ========= START OF TOP NAVBAR ======= --> 33*b2c653efSSorin Basca<div class="topNav"><a name="navbar.top"> 34*b2c653efSSorin Basca<!-- --> 35*b2c653efSSorin Basca</a> 36*b2c653efSSorin Basca<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> 37*b2c653efSSorin Basca<a name="navbar.top.firstrow"> 38*b2c653efSSorin Basca<!-- --> 39*b2c653efSSorin Basca</a> 40*b2c653efSSorin Basca<ul class="navList" title="Navigation"> 41*b2c653efSSorin Basca<li><a href="../overview-summary.html">Overview</a></li> 42*b2c653efSSorin Basca<li><a href="package-summary.html">Package</a></li> 43*b2c653efSSorin Basca<li class="navBarCell1Rev">Class</li> 44*b2c653efSSorin Basca<li><a href="class-use/JUnitParamsRunner.html">Use</a></li> 45*b2c653efSSorin Basca<li><a href="package-tree.html">Tree</a></li> 46*b2c653efSSorin Basca<li><a href="../deprecated-list.html">Deprecated</a></li> 47*b2c653efSSorin Basca<li><a href="../index-all.html">Index</a></li> 48*b2c653efSSorin Basca<li><a href="../help-doc.html">Help</a></li> 49*b2c653efSSorin Basca</ul> 50*b2c653efSSorin Basca</div> 51*b2c653efSSorin Basca<div class="subNav"> 52*b2c653efSSorin Basca<ul class="navList"> 53*b2c653efSSorin Basca<li><a href="../junitparams/FileParameters.html" title="annotation in junitparams"><span class="typeNameLink">Prev Class</span></a></li> 54*b2c653efSSorin Basca<li><a href="../junitparams/Parameters.html" title="annotation in junitparams"><span class="typeNameLink">Next Class</span></a></li> 55*b2c653efSSorin Basca</ul> 56*b2c653efSSorin Basca<ul class="navList"> 57*b2c653efSSorin Basca<li><a href="../index.html?junitparams/JUnitParamsRunner.html" target="_top">Frames</a></li> 58*b2c653efSSorin Basca<li><a href="JUnitParamsRunner.html" target="_top">No Frames</a></li> 59*b2c653efSSorin Basca</ul> 60*b2c653efSSorin Basca<ul class="navList" id="allclasses_navbar_top"> 61*b2c653efSSorin Basca<li><a href="../allclasses-noframe.html">All Classes</a></li> 62*b2c653efSSorin Basca</ul> 63*b2c653efSSorin Basca<div> 64*b2c653efSSorin Basca<script type="text/javascript"><!-- 65*b2c653efSSorin Basca allClassesLink = document.getElementById("allclasses_navbar_top"); 66*b2c653efSSorin Basca if(window==top) { 67*b2c653efSSorin Basca allClassesLink.style.display = "block"; 68*b2c653efSSorin Basca } 69*b2c653efSSorin Basca else { 70*b2c653efSSorin Basca allClassesLink.style.display = "none"; 71*b2c653efSSorin Basca } 72*b2c653efSSorin Basca //--> 73*b2c653efSSorin Basca</script> 74*b2c653efSSorin Basca</div> 75*b2c653efSSorin Basca<div> 76*b2c653efSSorin Basca<ul class="subNavList"> 77*b2c653efSSorin Basca<li>Summary: </li> 78*b2c653efSSorin Basca<li>Nested | </li> 79*b2c653efSSorin Basca<li>Field | </li> 80*b2c653efSSorin Basca<li><a href="#constructor.summary">Constr</a> | </li> 81*b2c653efSSorin Basca<li><a href="#method.summary">Method</a></li> 82*b2c653efSSorin Basca</ul> 83*b2c653efSSorin Basca<ul class="subNavList"> 84*b2c653efSSorin Basca<li>Detail: </li> 85*b2c653efSSorin Basca<li>Field | </li> 86*b2c653efSSorin Basca<li><a href="#constructor.detail">Constr</a> | </li> 87*b2c653efSSorin Basca<li><a href="#method.detail">Method</a></li> 88*b2c653efSSorin Basca</ul> 89*b2c653efSSorin Basca</div> 90*b2c653efSSorin Basca<a name="skip.navbar.top"> 91*b2c653efSSorin Basca<!-- --> 92*b2c653efSSorin Basca</a></div> 93*b2c653efSSorin Basca<!-- ========= END OF TOP NAVBAR ========= --> 94*b2c653efSSorin Basca<!-- ======== START OF CLASS DATA ======== --> 95*b2c653efSSorin Basca<div class="header"> 96*b2c653efSSorin Basca<div class="subTitle">junitparams</div> 97*b2c653efSSorin Basca<h2 title="Class JUnitParamsRunner" class="title">Class JUnitParamsRunner</h2> 98*b2c653efSSorin Basca</div> 99*b2c653efSSorin Basca<div class="contentContainer"> 100*b2c653efSSorin Basca<ul class="inheritance"> 101*b2c653efSSorin Basca<li><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li> 102*b2c653efSSorin Basca<li> 103*b2c653efSSorin Basca<ul class="inheritance"> 104*b2c653efSSorin Basca<li>org.junit.runner.Runner</li> 105*b2c653efSSorin Basca<li> 106*b2c653efSSorin Basca<ul class="inheritance"> 107*b2c653efSSorin Basca<li>org.junit.runners.ParentRunner<org.junit.runners.model.FrameworkMethod></li> 108*b2c653efSSorin Basca<li> 109*b2c653efSSorin Basca<ul class="inheritance"> 110*b2c653efSSorin Basca<li>org.junit.runners.BlockJUnit4ClassRunner</li> 111*b2c653efSSorin Basca<li> 112*b2c653efSSorin Basca<ul class="inheritance"> 113*b2c653efSSorin Basca<li>junitparams.JUnitParamsRunner</li> 114*b2c653efSSorin Basca</ul> 115*b2c653efSSorin Basca</li> 116*b2c653efSSorin Basca</ul> 117*b2c653efSSorin Basca</li> 118*b2c653efSSorin Basca</ul> 119*b2c653efSSorin Basca</li> 120*b2c653efSSorin Basca</ul> 121*b2c653efSSorin Basca</li> 122*b2c653efSSorin Basca</ul> 123*b2c653efSSorin Basca<div class="description"> 124*b2c653efSSorin Basca<ul class="blockList"> 125*b2c653efSSorin Basca<li class="blockList"> 126*b2c653efSSorin Basca<dl> 127*b2c653efSSorin Basca<dt>All Implemented Interfaces:</dt> 128*b2c653efSSorin Basca<dd>org.junit.runner.Describable, org.junit.runner.manipulation.Filterable, org.junit.runner.manipulation.Sortable</dd> 129*b2c653efSSorin Basca</dl> 130*b2c653efSSorin Basca<hr> 131*b2c653efSSorin Basca<br> 132*b2c653efSSorin Basca<pre>public class <span class="typeNameLabel">JUnitParamsRunner</span> 133*b2c653efSSorin Bascaextends org.junit.runners.BlockJUnit4ClassRunner</pre> 134*b2c653efSSorin Basca<div class="block"><h1>JUnitParams</h1><br> 135*b2c653efSSorin Basca <p> 136*b2c653efSSorin Basca This is a JUnit runner for parameterised tests that don't suck. Annotate your test class with 137*b2c653efSSorin Basca <code>@RunWith(JUnitParamsRunner.class)</code> and place 138*b2c653efSSorin Basca <code>@Parameters</code> annotation on each test method which requires 139*b2c653efSSorin Basca parameters. Nothing more needed - no special structure, no dirty tricks. 140*b2c653efSSorin Basca </p> 141*b2c653efSSorin Basca <br> 142*b2c653efSSorin Basca <h2>Contents</h2> <b> <a href="#p1">1. Parameterising tests</a><br> 143*b2c653efSSorin Basca <a href="#a">a. Parameterising tests via values 144*b2c653efSSorin Basca in annotation</a><br> 145*b2c653efSSorin Basca <a href="#b">b. Parameterising tests via a 146*b2c653efSSorin Basca method that returns parameter values</a><br> 147*b2c653efSSorin Basca <a href="#c">c. Parameterising tests via 148*b2c653efSSorin Basca external classes</a><br> 149*b2c653efSSorin Basca <a href="#d">d. Loading parameters from files</a><br> 150*b2c653efSSorin Basca <a href="#d">e. Converting parameter values</a><br> 151*b2c653efSSorin Basca <a href="#p2">2. Usage with Spring</a><br> 152*b2c653efSSorin Basca <a href="#p3">3. Other options</a><br> 153*b2c653efSSorin Basca </b><br> 154*b2c653efSSorin Basca <h3 id="p1">1. Parameterising tests</h3> Parameterised tests are a great way 155*b2c653efSSorin Basca to limit the amount of test code when you need to test the same code under 156*b2c653efSSorin Basca different conditions. Ever tried to do it with standard JUnit tools like 157*b2c653efSSorin Basca Parameterized runner or Theories? I always thought they're so awkward to use, 158*b2c653efSSorin Basca that I've written this library to help all those out there who'd like to have 159*b2c653efSSorin Basca a handy tool. 160*b2c653efSSorin Basca 161*b2c653efSSorin Basca So here we go. There are a few different ways to use JUnitParams, I will try 162*b2c653efSSorin Basca to show you all of them here. 163*b2c653efSSorin Basca 164*b2c653efSSorin Basca <h4 id="a">a. Parameterising tests via values in annotation</h4> 165*b2c653efSSorin Basca <p> 166*b2c653efSSorin Basca You can parameterise your test with values defined in annotations. Just pass 167*b2c653efSSorin Basca sets of test method argument values as an array of Strings, where each string 168*b2c653efSSorin Basca contains the argument values separated by a comma or a pipe "|". 169*b2c653efSSorin Basca 170*b2c653efSSorin Basca <pre> 171*b2c653efSSorin Basca @Test 172*b2c653efSSorin Basca @Parameters({ "20, Tarzan", "0, Jane" }) 173*b2c653efSSorin Basca public void cartoonCharacters(int yearsInJungle, String person) { 174*b2c653efSSorin Basca ... 175*b2c653efSSorin Basca } 176*b2c653efSSorin Basca </pre> 177*b2c653efSSorin Basca 178*b2c653efSSorin Basca Sometimes you may be interested in passing enum values as parameters, then 179*b2c653efSSorin Basca you can just write them as Strings like this: 180*b2c653efSSorin Basca 181*b2c653efSSorin Basca <pre> 182*b2c653efSSorin Basca @Test 183*b2c653efSSorin Basca @Parameters({ "FROM_JUNGLE", "FROM_CITY" }) 184*b2c653efSSorin Basca public void passEnumAsParam(PersonType person) { 185*b2c653efSSorin Basca } 186*b2c653efSSorin Basca </pre> 187*b2c653efSSorin Basca 188*b2c653efSSorin Basca <h4 id="b">b. Parameterising tests via a method that returns parameter values 189*b2c653efSSorin Basca </h4> 190*b2c653efSSorin Basca <p> 191*b2c653efSSorin Basca Obivously passing parameters as strings is handy only for trivial situations, 192*b2c653efSSorin Basca that's why for normal cases you have a method that gives you a collection of 193*b2c653efSSorin Basca parameters: 194*b2c653efSSorin Basca 195*b2c653efSSorin Basca <pre> 196*b2c653efSSorin Basca @Test 197*b2c653efSSorin Basca @Parameters(method = "cartoonCharacters") 198*b2c653efSSorin Basca public void cartoonCharacters(int yearsInJungle, String person) { 199*b2c653efSSorin Basca ... 200*b2c653efSSorin Basca } 201*b2c653efSSorin Basca private Object[] cartoonCharacters() { 202*b2c653efSSorin Basca return $( 203*b2c653efSSorin Basca $(0, "Tarzan"), 204*b2c653efSSorin Basca $(20, "Jane") 205*b2c653efSSorin Basca ); 206*b2c653efSSorin Basca } 207*b2c653efSSorin Basca </pre> 208*b2c653efSSorin Basca 209*b2c653efSSorin Basca Where <code>$(...)</code> is a static method defined in 210*b2c653efSSorin Basca <code>JUnitParamsRunner</code> class, which returns its parameters as a 211*b2c653efSSorin Basca <code>Object[]</code> array. Just a shortcut, so that you don't need to write the ugly <code>new Object[] {}</code> kind of stuff. 212*b2c653efSSorin Basca 213*b2c653efSSorin Basca <p> 214*b2c653efSSorin Basca <code>method</code> can take more than one method name - you can pass as many 215*b2c653efSSorin Basca of them as you want, separated by commas. This enables you to divide your 216*b2c653efSSorin Basca test cases e.g. into categories. 217*b2c653efSSorin Basca <pre> 218*b2c653efSSorin Basca @Test 219*b2c653efSSorin Basca @Parameters(method = "menCharactes, womenCharacters") 220*b2c653efSSorin Basca public void cartoonCharacters(int yearsInJungle, String person) { 221*b2c653efSSorin Basca ... 222*b2c653efSSorin Basca } 223*b2c653efSSorin Basca private Object[] menCharacters() { 224*b2c653efSSorin Basca return $( 225*b2c653efSSorin Basca $(20, "Tarzan"), 226*b2c653efSSorin Basca $(2, "Chip"), 227*b2c653efSSorin Basca $(2, "Dale") 228*b2c653efSSorin Basca ); 229*b2c653efSSorin Basca } 230*b2c653efSSorin Basca private Object[] womenCharacters() { 231*b2c653efSSorin Basca return $( 232*b2c653efSSorin Basca $(0, "Jane"), 233*b2c653efSSorin Basca $(18, "Pocahontas") 234*b2c653efSSorin Basca ); 235*b2c653efSSorin Basca } 236*b2c653efSSorin Basca </pre> 237*b2c653efSSorin Basca <p> 238*b2c653efSSorin Basca The <code>method</code> argument of a <code>@Parameters</code> annotation can 239*b2c653efSSorin Basca be ommited if the method that provides parameters has a the same name as the 240*b2c653efSSorin Basca test, but prefixed by <code>parametersFor</code>. So our example would look 241*b2c653efSSorin Basca like this: 242*b2c653efSSorin Basca 243*b2c653efSSorin Basca <pre> 244*b2c653efSSorin Basca @Test 245*b2c653efSSorin Basca @Parameters 246*b2c653efSSorin Basca public void cartoonCharacters(int yearsInJungle, String person) { 247*b2c653efSSorin Basca ... 248*b2c653efSSorin Basca } 249*b2c653efSSorin Basca private Object[] parametersForCartoonCharacters() { 250*b2c653efSSorin Basca return $( 251*b2c653efSSorin Basca $(0, "Tarzan"), 252*b2c653efSSorin Basca $(20, "Jane") 253*b2c653efSSorin Basca ); 254*b2c653efSSorin Basca } 255*b2c653efSSorin Basca </pre> 256*b2c653efSSorin Basca 257*b2c653efSSorin Basca <p> 258*b2c653efSSorin Basca If you don't like returning untyped values and arrays, you can equally well 259*b2c653efSSorin Basca return any Iterable of concrete objects: 260*b2c653efSSorin Basca 261*b2c653efSSorin Basca <pre> 262*b2c653efSSorin Basca @Test 263*b2c653efSSorin Basca @Parameters 264*b2c653efSSorin Basca public void cartoonCharacters(Person character) { 265*b2c653efSSorin Basca ... 266*b2c653efSSorin Basca } 267*b2c653efSSorin Basca private List<Person> parametersForCartoonCharacters() { 268*b2c653efSSorin Basca return Arrays.asList( 269*b2c653efSSorin Basca new Person(0, "Tarzan"), 270*b2c653efSSorin Basca new Person(20, "Jane") 271*b2c653efSSorin Basca ); 272*b2c653efSSorin Basca } 273*b2c653efSSorin Basca </pre> 274*b2c653efSSorin Basca 275*b2c653efSSorin Basca If we had more than just two Person's to make, we would get redundant, 276*b2c653efSSorin Basca so JUnitParams gives you a simplified way of creating objects to be passed as 277*b2c653efSSorin Basca params. You can omit the creation of the objects and just return their constructor 278*b2c653efSSorin Basca argument values like this: 279*b2c653efSSorin Basca 280*b2c653efSSorin Basca <pre> 281*b2c653efSSorin Basca @Test 282*b2c653efSSorin Basca @Parameters 283*b2c653efSSorin Basca public void cartoonCharacters(Person character) { 284*b2c653efSSorin Basca ... 285*b2c653efSSorin Basca } 286*b2c653efSSorin Basca private List<?> parametersForCartoonCharacters() { 287*b2c653efSSorin Basca return Arrays.asList( 288*b2c653efSSorin Basca $(0, "Tarzan"), 289*b2c653efSSorin Basca $(20, "Jane") 290*b2c653efSSorin Basca ); 291*b2c653efSSorin Basca } 292*b2c653efSSorin Basca </pre> 293*b2c653efSSorin Basca And JUnitParams will invoke the appropriate constructor (<code>new Person(int age, String name)</code> in this case.) 294*b2c653efSSorin Basca <b>If you want to use it, watch out! Automatic refactoring of constructor 295*b2c653efSSorin Basca arguments won't be working here!</b> 296*b2c653efSSorin Basca 297*b2c653efSSorin Basca <p> 298*b2c653efSSorin Basca You can also define methods that provide parameters in subclasses and use 299*b2c653efSSorin Basca them in test methods defined in superclasses, as well as redefine data 300*b2c653efSSorin Basca providing methods in subclasses to be used by test method defined in a 301*b2c653efSSorin Basca superclass. That you can doesn't mean you should. Inheritance in tests is 302*b2c653efSSorin Basca usually a code smell (readability hurts), so make sure you know what you're 303*b2c653efSSorin Basca doing. 304*b2c653efSSorin Basca 305*b2c653efSSorin Basca <h4 id="c">c. Parameterising tests via external classes</h4> 306*b2c653efSSorin Basca <p> 307*b2c653efSSorin Basca For more complex cases you may want to externalise the method that provides 308*b2c653efSSorin Basca parameters or use more than one method to provide parameters to a single test 309*b2c653efSSorin Basca method. You can easily do that like this: 310*b2c653efSSorin Basca 311*b2c653efSSorin Basca <pre> 312*b2c653efSSorin Basca @Test 313*b2c653efSSorin Basca @Parameters(source = CartoonCharactersProvider.class) 314*b2c653efSSorin Basca public void testReadyToLiveInJungle(int yearsInJungle, String person) { 315*b2c653efSSorin Basca ... 316*b2c653efSSorin Basca } 317*b2c653efSSorin Basca ... 318*b2c653efSSorin Basca class CartoonCharactersProvider { 319*b2c653efSSorin Basca public static Object[] provideCartoonCharactersManually() { 320*b2c653efSSorin Basca return $( 321*b2c653efSSorin Basca $(0, "Tarzan"), 322*b2c653efSSorin Basca $(20, "Jane") 323*b2c653efSSorin Basca ); 324*b2c653efSSorin Basca } 325*b2c653efSSorin Basca public static Object[] provideCartoonCharactersFromDB() { 326*b2c653efSSorin Basca return cartoonsRepository.loadCharacters(); 327*b2c653efSSorin Basca } 328*b2c653efSSorin Basca } 329*b2c653efSSorin Basca </pre> 330*b2c653efSSorin Basca 331*b2c653efSSorin Basca All methods starting with <code>provide</code> are used as parameter 332*b2c653efSSorin Basca providers. 333*b2c653efSSorin Basca 334*b2c653efSSorin Basca <p> 335*b2c653efSSorin Basca Sometimes though you may want to use just one or few methods of some class to 336*b2c653efSSorin Basca provide you parameters. This can be done as well like this: 337*b2c653efSSorin Basca 338*b2c653efSSorin Basca <pre> 339*b2c653efSSorin Basca @Test 340*b2c653efSSorin Basca @Parameters(source = CartoonCharactersProvider.class, method = "cinderellaCharacters,snowwhiteCharacters") 341*b2c653efSSorin Basca public void testPrincesses(boolean isAPrincess, String characterName) { 342*b2c653efSSorin Basca ... 343*b2c653efSSorin Basca } 344*b2c653efSSorin Basca </pre> 345*b2c653efSSorin Basca 346*b2c653efSSorin Basca 347*b2c653efSSorin Basca <h4 id="d">d. Loading parameters from files</h4> You may be interested in 348*b2c653efSSorin Basca loading parameters from a file. This is very easy if it's a CSV file with 349*b2c653efSSorin Basca columns in the same order as test method parameters: 350*b2c653efSSorin Basca 351*b2c653efSSorin Basca <pre> 352*b2c653efSSorin Basca @Test 353*b2c653efSSorin Basca @FileParameters("cartoon-characters.csv") 354*b2c653efSSorin Basca public void shouldSurviveInJungle(int yearsInJungle, String person) { 355*b2c653efSSorin Basca ... 356*b2c653efSSorin Basca } 357*b2c653efSSorin Basca </pre> 358*b2c653efSSorin Basca 359*b2c653efSSorin Basca But if you want to process the data from the CSV file a bit to use it in the 360*b2c653efSSorin Basca test method arguments, you 361*b2c653efSSorin Basca need to use an <code>IdentityMapper</code>. Look: 362*b2c653efSSorin Basca 363*b2c653efSSorin Basca <pre> 364*b2c653efSSorin Basca @Test 365*b2c653efSSorin Basca @FileParameters(value = "cartoon-characters.csv", mapper = CartoonMapper.class) 366*b2c653efSSorin Basca public void shouldSurviveInJungle(Person person) { 367*b2c653efSSorin Basca ... 368*b2c653efSSorin Basca } 369*b2c653efSSorin Basca 370*b2c653efSSorin Basca public class CartoonMapper extends IdentityMapper { 371*b2c653efSSorin Basca @Override 372*b2c653efSSorin Basca public Object[] map(Reader reader) { 373*b2c653efSSorin Basca Object[] map = super.map(reader); 374*b2c653efSSorin Basca List<Object[]> result = new LinkedList<Object[]>(); 375*b2c653efSSorin Basca for (Object lineObj : map) { 376*b2c653efSSorin Basca String line = (String) lineObj; // line in a format just like in the file 377*b2c653efSSorin Basca result.add(new Object[] { ..... }); // some format edible by the test method 378*b2c653efSSorin Basca } 379*b2c653efSSorin Basca return result.toArray(); 380*b2c653efSSorin Basca } 381*b2c653efSSorin Basca 382*b2c653efSSorin Basca } 383*b2c653efSSorin Basca </pre> 384*b2c653efSSorin Basca 385*b2c653efSSorin Basca A CSV files with a header are also supported with the use of <code>CsvWithHeaderMapper</code> class. 386*b2c653efSSorin Basca 387*b2c653efSSorin Basca You may also want to use a completely different file format, like excel or 388*b2c653efSSorin Basca something. Then just parse it yourself: 389*b2c653efSSorin Basca 390*b2c653efSSorin Basca <pre> 391*b2c653efSSorin Basca @Test 392*b2c653efSSorin Basca @FileParameters(value = "cartoon-characters.xsl", mapper = ExcelCartoonMapper.class) 393*b2c653efSSorin Basca public void shouldSurviveInJungle(Person person) { 394*b2c653efSSorin Basca ... 395*b2c653efSSorin Basca } 396*b2c653efSSorin Basca 397*b2c653efSSorin Basca public class CartoonMapper implements DataMapper { 398*b2c653efSSorin Basca @Override 399*b2c653efSSorin Basca public Object[] map(Reader fileReader) { 400*b2c653efSSorin Basca ... 401*b2c653efSSorin Basca } 402*b2c653efSSorin Basca } 403*b2c653efSSorin Basca </pre> 404*b2c653efSSorin Basca 405*b2c653efSSorin Basca As you see, you don't need to open or close the file. Just read it from the 406*b2c653efSSorin Basca reader and parse it the way you wish. 407*b2c653efSSorin Basca 408*b2c653efSSorin Basca By default the file is loaded from the file system, relatively to where you start the tests from. But you can also use a resource from 409*b2c653efSSorin Basca the classpath by prefixing the file name with <code>classpath:</code> 410*b2c653efSSorin Basca 411*b2c653efSSorin Basca <h4 id="e">e. Converting parameter values</h4> 412*b2c653efSSorin Basca Sometimes you want to pass some parameter in one form, but use it in the test in another. Dates are a good example. It's handy to 413*b2c653efSSorin Basca specify them in the parameters as a String like "2013.01.01", but you'd like to use a Jodatime's LocalDate or JDKs Date in the test 414*b2c653efSSorin Basca without manually converting the value in the test. This is where the converters become handy. It's enough to annotate a parameter with 415*b2c653efSSorin Basca a <code>@ConvertParam</code> annotation, give it a converter class and possibly some options (like date format in this case) and 416*b2c653efSSorin Basca you're done. Here's an example: 417*b2c653efSSorin Basca <pre> 418*b2c653efSSorin Basca @Test 419*b2c653efSSorin Basca @Parameters({ "01.12.2012, A" }) 420*b2c653efSSorin Basca public void convertMultipleParams( 421*b2c653efSSorin Basca @ConvertParam(value = StringToDateConverter.class, options = "dd.MM.yyyy") Date date, 422*b2c653efSSorin Basca @ConvertParam(LetterToASCIIConverter.class) int num) { 423*b2c653efSSorin Basca 424*b2c653efSSorin Basca Calendar calendar = Calendar.getInstance(); 425*b2c653efSSorin Basca calendar.setTime(date); 426*b2c653efSSorin Basca 427*b2c653efSSorin Basca assertEquals(2012, calendar.get(Calendar.YEAR)); 428*b2c653efSSorin Basca assertEquals(11, calendar.get(Calendar.MONTH)); 429*b2c653efSSorin Basca assertEquals(1, calendar.get(Calendar.DAY_OF_MONTH)); 430*b2c653efSSorin Basca 431*b2c653efSSorin Basca assertEquals(65, num); 432*b2c653efSSorin Basca } 433*b2c653efSSorin Basca </pre> 434*b2c653efSSorin Basca 435*b2c653efSSorin Basca <h3 id="p2">2. Usage with Spring</h3> 436*b2c653efSSorin Basca <p> 437*b2c653efSSorin Basca You can easily use JUnitParams together with Spring. The only problem is that 438*b2c653efSSorin Basca Spring's test framework is based on JUnit runners, and JUnit allows only one 439*b2c653efSSorin Basca runner to be run at once. Which would normally mean that you could use only 440*b2c653efSSorin Basca one of Spring or JUnitParams. Luckily we can cheat Spring a little by adding 441*b2c653efSSorin Basca this to your test class: 442*b2c653efSSorin Basca 443*b2c653efSSorin Basca <pre> 444*b2c653efSSorin Basca private TestContextManager testContextManager; 445*b2c653efSSorin Basca 446*b2c653efSSorin Basca @Before 447*b2c653efSSorin Basca public void init() throws Exception { 448*b2c653efSSorin Basca this.testContextManager = new TestContextManager(getClass()); 449*b2c653efSSorin Basca this.testContextManager.prepareTestInstance(this); 450*b2c653efSSorin Basca } 451*b2c653efSSorin Basca </pre> 452*b2c653efSSorin Basca 453*b2c653efSSorin Basca This lets you use in your tests anything that Spring provides in its test 454*b2c653efSSorin Basca framework. 455*b2c653efSSorin Basca 456*b2c653efSSorin Basca <h3 id="p3">3. Other options</h3> <h4>Customizing how parameter objects are 457*b2c653efSSorin Basca shown in IDE</h4> 458*b2c653efSSorin Basca <p> 459*b2c653efSSorin Basca Tests show up in your IDE as a tree with test class name being the root, test 460*b2c653efSSorin Basca methods being nodes, and parameter sets being the leaves. If you want to 461*b2c653efSSorin Basca customize the way an parameter object is shown, create a <b>toString</b> 462*b2c653efSSorin Basca method for it. 463*b2c653efSSorin Basca <h4>Empty parameter sets</h4> 464*b2c653efSSorin Basca <p> 465*b2c653efSSorin Basca If you create a parameterised test, but won't give it any parameter sets, it 466*b2c653efSSorin Basca will be ignored and you'll be warned about it. 467*b2c653efSSorin Basca <h4>Parameterised test with no parameters</h4> 468*b2c653efSSorin Basca <p> 469*b2c653efSSorin Basca If for some reason you want to have a normal non-parameterised method to be 470*b2c653efSSorin Basca annotated with @Parameters, then fine, you can do it. But it will be ignored 471*b2c653efSSorin Basca then, since there won't be any params for it, and parameterised tests need 472*b2c653efSSorin Basca parameters to execute properly (parameters are a part of test setup, right?) 473*b2c653efSSorin Basca <h4>JUnit Rules</h4> 474*b2c653efSSorin Basca <p> 475*b2c653efSSorin Basca The runner for parameterised test is trying to keep all the @Rule's running, 476*b2c653efSSorin Basca but if something doesn't work - let me know. It's pretty tricky, since the 477*b2c653efSSorin Basca rules in JUnit are chained, but the chain is kind of... unstructured, so 478*b2c653efSSorin Basca sometimes I need to guess how to call the next element in chain. If you have 479*b2c653efSSorin Basca your own rule, make sure it has a field of type Statement which is the next 480*b2c653efSSorin Basca statement in chain to call. 481*b2c653efSSorin Basca <h4>Test inheritance</h4> 482*b2c653efSSorin Basca <p> 483*b2c653efSSorin Basca Although usually a bad idea, since it makes tests less readable, sometimes 484*b2c653efSSorin Basca inheritance is the best way to remove repetitions from tests. JUnitParams is 485*b2c653efSSorin Basca fine with inheritance - you can define a common test in the superclass, and 486*b2c653efSSorin Basca have separate parameters provider methods in the subclasses. Also the other 487*b2c653efSSorin Basca way around is ok, you can define parameter providers in superclass and have 488*b2c653efSSorin Basca tests in subclasses uses them as their input.</div> 489*b2c653efSSorin Basca<dl> 490*b2c653efSSorin Basca<dt><span class="simpleTagLabel">Author:</span></dt> 491*b2c653efSSorin Basca<dd>Pawel Lipinski ([email protected])</dd> 492*b2c653efSSorin Basca</dl> 493*b2c653efSSorin Basca</li> 494*b2c653efSSorin Basca</ul> 495*b2c653efSSorin Basca</div> 496*b2c653efSSorin Basca<div class="summary"> 497*b2c653efSSorin Basca<ul class="blockList"> 498*b2c653efSSorin Basca<li class="blockList"> 499*b2c653efSSorin Basca<!-- ======== CONSTRUCTOR SUMMARY ======== --> 500*b2c653efSSorin Basca<ul class="blockList"> 501*b2c653efSSorin Basca<li class="blockList"><a name="constructor.summary"> 502*b2c653efSSorin Basca<!-- --> 503*b2c653efSSorin Basca</a> 504*b2c653efSSorin Basca<h3>Constructor Summary</h3> 505*b2c653efSSorin Basca<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> 506*b2c653efSSorin Basca<caption><span>Constructors</span><span class="tabEnd"> </span></caption> 507*b2c653efSSorin Basca<tr> 508*b2c653efSSorin Basca<th class="colOne" scope="col">Constructor and Description</th> 509*b2c653efSSorin Basca</tr> 510*b2c653efSSorin Basca<tr class="altColor"> 511*b2c653efSSorin Basca<td class="colOne"><code><span class="memberNameLink"><a href="../junitparams/JUnitParamsRunner.html#JUnitParamsRunner-java.lang.Class-">JUnitParamsRunner</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><?> klass)</code> </td> 512*b2c653efSSorin Basca</tr> 513*b2c653efSSorin Basca</table> 514*b2c653efSSorin Basca</li> 515*b2c653efSSorin Basca</ul> 516*b2c653efSSorin Basca<!-- ========== METHOD SUMMARY =========== --> 517*b2c653efSSorin Basca<ul class="blockList"> 518*b2c653efSSorin Basca<li class="blockList"><a name="method.summary"> 519*b2c653efSSorin Basca<!-- --> 520*b2c653efSSorin Basca</a> 521*b2c653efSSorin Basca<h3>Method Summary</h3> 522*b2c653efSSorin Basca<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> 523*b2c653efSSorin Basca<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> 524*b2c653efSSorin Basca<tr> 525*b2c653efSSorin Basca<th class="colFirst" scope="col">Modifier and Type</th> 526*b2c653efSSorin Basca<th class="colLast" scope="col">Method and Description</th> 527*b2c653efSSorin Basca</tr> 528*b2c653efSSorin Basca<tr id="i0" class="altColor"> 529*b2c653efSSorin Basca<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]</code></td> 530*b2c653efSSorin Basca<td class="colLast"><code><span class="memberNameLink"><a href="../junitparams/JUnitParamsRunner.html#Z:Z:D-java.lang.Object...-">$</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>... params)</code> 531*b2c653efSSorin Basca<div class="block">Shortcut for returning an array of objects.</div> 532*b2c653efSSorin Basca</td> 533*b2c653efSSorin Basca</tr> 534*b2c653efSSorin Basca<tr id="i1" class="rowColor"> 535*b2c653efSSorin Basca<td class="colFirst"><code>protected void</code></td> 536*b2c653efSSorin Basca<td class="colLast"><code><span class="memberNameLink"><a href="../junitparams/JUnitParamsRunner.html#collectInitializationErrors-java.util.List-">collectInitializationErrors</a></span>(<a href="http://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>> errors)</code> </td> 537*b2c653efSSorin Basca</tr> 538*b2c653efSSorin Basca<tr id="i2" class="altColor"> 539*b2c653efSSorin Basca<td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.junit.runners.model.FrameworkMethod></code></td> 540*b2c653efSSorin Basca<td class="colLast"><code><span class="memberNameLink"><a href="../junitparams/JUnitParamsRunner.html#computeTestMethods--">computeTestMethods</a></span>()</code> </td> 541*b2c653efSSorin Basca</tr> 542*b2c653efSSorin Basca<tr id="i3" class="rowColor"> 543*b2c653efSSorin Basca<td class="colFirst"><code>protected org.junit.runner.Description</code></td> 544*b2c653efSSorin Basca<td class="colLast"><code><span class="memberNameLink"><a href="../junitparams/JUnitParamsRunner.html#describeMethod-org.junit.runners.model.FrameworkMethod-">describeMethod</a></span>(org.junit.runners.model.FrameworkMethod method)</code> </td> 545*b2c653efSSorin Basca</tr> 546*b2c653efSSorin Basca<tr id="i4" class="altColor"> 547*b2c653efSSorin Basca<td class="colFirst"><code>org.junit.runner.Description</code></td> 548*b2c653efSSorin Basca<td class="colLast"><code><span class="memberNameLink"><a href="../junitparams/JUnitParamsRunner.html#getDescription--">getDescription</a></span>()</code> </td> 549*b2c653efSSorin Basca</tr> 550*b2c653efSSorin Basca<tr id="i5" class="rowColor"> 551*b2c653efSSorin Basca<td class="colFirst"><code>protected org.junit.runners.model.Statement</code></td> 552*b2c653efSSorin Basca<td class="colLast"><code><span class="memberNameLink"><a href="../junitparams/JUnitParamsRunner.html#methodInvoker-org.junit.runners.model.FrameworkMethod-java.lang.Object-">methodInvoker</a></span>(org.junit.runners.model.FrameworkMethod method, 553*b2c653efSSorin Basca <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> test)</code> </td> 554*b2c653efSSorin Basca</tr> 555*b2c653efSSorin Basca<tr id="i6" class="altColor"> 556*b2c653efSSorin Basca<td class="colFirst"><code>protected void</code></td> 557*b2c653efSSorin Basca<td class="colLast"><code><span class="memberNameLink"><a href="../junitparams/JUnitParamsRunner.html#runChild-org.junit.runners.model.FrameworkMethod-org.junit.runner.notification.RunNotifier-">runChild</a></span>(org.junit.runners.model.FrameworkMethod method, 558*b2c653efSSorin Basca org.junit.runner.notification.RunNotifier notifier)</code> </td> 559*b2c653efSSorin Basca</tr> 560*b2c653efSSorin Basca</table> 561*b2c653efSSorin Basca<ul class="blockList"> 562*b2c653efSSorin Basca<li class="blockList"><a name="methods.inherited.from.class.org.junit.runners.BlockJUnit4ClassRunner"> 563*b2c653efSSorin Basca<!-- --> 564*b2c653efSSorin Basca</a> 565*b2c653efSSorin Basca<h3>Methods inherited from class org.junit.runners.BlockJUnit4ClassRunner</h3> 566*b2c653efSSorin Basca<code>createTest, describeChild, getChildren, getTestRules, methodBlock, possiblyExpectingExceptions, rules, testName, validateConstructor, validateFields, validateInstanceMethods, validateNoNonStaticInnerClass, validateOnlyOneConstructor, validateTestMethods, validateZeroArgConstructor, withAfters, withBefores, withPotentialTimeout</code></li> 567*b2c653efSSorin Basca</ul> 568*b2c653efSSorin Basca<ul class="blockList"> 569*b2c653efSSorin Basca<li class="blockList"><a name="methods.inherited.from.class.org.junit.runners.ParentRunner"> 570*b2c653efSSorin Basca<!-- --> 571*b2c653efSSorin Basca</a> 572*b2c653efSSorin Basca<h3>Methods inherited from class org.junit.runners.ParentRunner</h3> 573*b2c653efSSorin Basca<code>childrenInvoker, classBlock, classRules, filter, getName, getRunnerAnnotations, getTestClass, run, runLeaf, setScheduler, sort, validatePublicVoidNoArgMethods, withAfterClasses, withBeforeClasses</code></li> 574*b2c653efSSorin Basca</ul> 575*b2c653efSSorin Basca<ul class="blockList"> 576*b2c653efSSorin Basca<li class="blockList"><a name="methods.inherited.from.class.org.junit.runner.Runner"> 577*b2c653efSSorin Basca<!-- --> 578*b2c653efSSorin Basca</a> 579*b2c653efSSorin Basca<h3>Methods inherited from class org.junit.runner.Runner</h3> 580*b2c653efSSorin Basca<code>testCount</code></li> 581*b2c653efSSorin Basca</ul> 582*b2c653efSSorin Basca<ul class="blockList"> 583*b2c653efSSorin Basca<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> 584*b2c653efSSorin Basca<!-- --> 585*b2c653efSSorin Basca</a> 586*b2c653efSSorin Basca<h3>Methods inherited from class java.lang.<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3> 587*b2c653efSSorin Basca<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li> 588*b2c653efSSorin Basca</ul> 589*b2c653efSSorin Basca</li> 590*b2c653efSSorin Basca</ul> 591*b2c653efSSorin Basca</li> 592*b2c653efSSorin Basca</ul> 593*b2c653efSSorin Basca</div> 594*b2c653efSSorin Basca<div class="details"> 595*b2c653efSSorin Basca<ul class="blockList"> 596*b2c653efSSorin Basca<li class="blockList"> 597*b2c653efSSorin Basca<!-- ========= CONSTRUCTOR DETAIL ======== --> 598*b2c653efSSorin Basca<ul class="blockList"> 599*b2c653efSSorin Basca<li class="blockList"><a name="constructor.detail"> 600*b2c653efSSorin Basca<!-- --> 601*b2c653efSSorin Basca</a> 602*b2c653efSSorin Basca<h3>Constructor Detail</h3> 603*b2c653efSSorin Basca<a name="JUnitParamsRunner-java.lang.Class-"> 604*b2c653efSSorin Basca<!-- --> 605*b2c653efSSorin Basca</a> 606*b2c653efSSorin Basca<ul class="blockListLast"> 607*b2c653efSSorin Basca<li class="blockList"> 608*b2c653efSSorin Basca<h4>JUnitParamsRunner</h4> 609*b2c653efSSorin Basca<pre>public JUnitParamsRunner(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a><?> klass) 610*b2c653efSSorin Basca throws org.junit.runners.model.InitializationError</pre> 611*b2c653efSSorin Basca<dl> 612*b2c653efSSorin Basca<dt><span class="throwsLabel">Throws:</span></dt> 613*b2c653efSSorin Basca<dd><code>org.junit.runners.model.InitializationError</code></dd> 614*b2c653efSSorin Basca</dl> 615*b2c653efSSorin Basca</li> 616*b2c653efSSorin Basca</ul> 617*b2c653efSSorin Basca</li> 618*b2c653efSSorin Basca</ul> 619*b2c653efSSorin Basca<!-- ============ METHOD DETAIL ========== --> 620*b2c653efSSorin Basca<ul class="blockList"> 621*b2c653efSSorin Basca<li class="blockList"><a name="method.detail"> 622*b2c653efSSorin Basca<!-- --> 623*b2c653efSSorin Basca</a> 624*b2c653efSSorin Basca<h3>Method Detail</h3> 625*b2c653efSSorin Basca<a name="collectInitializationErrors-java.util.List-"> 626*b2c653efSSorin Basca<!-- --> 627*b2c653efSSorin Basca</a> 628*b2c653efSSorin Basca<ul class="blockList"> 629*b2c653efSSorin Basca<li class="blockList"> 630*b2c653efSSorin Basca<h4>collectInitializationErrors</h4> 631*b2c653efSSorin Basca<pre>protected void collectInitializationErrors(<a href="http://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>> errors)</pre> 632*b2c653efSSorin Basca<dl> 633*b2c653efSSorin Basca<dt><span class="overrideSpecifyLabel">Overrides:</span></dt> 634*b2c653efSSorin Basca<dd><code>collectInitializationErrors</code> in class <code>org.junit.runners.BlockJUnit4ClassRunner</code></dd> 635*b2c653efSSorin Basca</dl> 636*b2c653efSSorin Basca</li> 637*b2c653efSSorin Basca</ul> 638*b2c653efSSorin Basca<a name="runChild-org.junit.runners.model.FrameworkMethod-org.junit.runner.notification.RunNotifier-"> 639*b2c653efSSorin Basca<!-- --> 640*b2c653efSSorin Basca</a> 641*b2c653efSSorin Basca<ul class="blockList"> 642*b2c653efSSorin Basca<li class="blockList"> 643*b2c653efSSorin Basca<h4>runChild</h4> 644*b2c653efSSorin Basca<pre>protected void runChild(org.junit.runners.model.FrameworkMethod method, 645*b2c653efSSorin Basca org.junit.runner.notification.RunNotifier notifier)</pre> 646*b2c653efSSorin Basca<dl> 647*b2c653efSSorin Basca<dt><span class="overrideSpecifyLabel">Overrides:</span></dt> 648*b2c653efSSorin Basca<dd><code>runChild</code> in class <code>org.junit.runners.BlockJUnit4ClassRunner</code></dd> 649*b2c653efSSorin Basca</dl> 650*b2c653efSSorin Basca</li> 651*b2c653efSSorin Basca</ul> 652*b2c653efSSorin Basca<a name="computeTestMethods--"> 653*b2c653efSSorin Basca<!-- --> 654*b2c653efSSorin Basca</a> 655*b2c653efSSorin Basca<ul class="blockList"> 656*b2c653efSSorin Basca<li class="blockList"> 657*b2c653efSSorin Basca<h4>computeTestMethods</h4> 658*b2c653efSSorin Basca<pre>protected <a href="http://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.junit.runners.model.FrameworkMethod> computeTestMethods()</pre> 659*b2c653efSSorin Basca<dl> 660*b2c653efSSorin Basca<dt><span class="overrideSpecifyLabel">Overrides:</span></dt> 661*b2c653efSSorin Basca<dd><code>computeTestMethods</code> in class <code>org.junit.runners.BlockJUnit4ClassRunner</code></dd> 662*b2c653efSSorin Basca</dl> 663*b2c653efSSorin Basca</li> 664*b2c653efSSorin Basca</ul> 665*b2c653efSSorin Basca<a name="methodInvoker-org.junit.runners.model.FrameworkMethod-java.lang.Object-"> 666*b2c653efSSorin Basca<!-- --> 667*b2c653efSSorin Basca</a> 668*b2c653efSSorin Basca<ul class="blockList"> 669*b2c653efSSorin Basca<li class="blockList"> 670*b2c653efSSorin Basca<h4>methodInvoker</h4> 671*b2c653efSSorin Basca<pre>protected org.junit.runners.model.Statement methodInvoker(org.junit.runners.model.FrameworkMethod method, 672*b2c653efSSorin Basca <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> test)</pre> 673*b2c653efSSorin Basca<dl> 674*b2c653efSSorin Basca<dt><span class="overrideSpecifyLabel">Overrides:</span></dt> 675*b2c653efSSorin Basca<dd><code>methodInvoker</code> in class <code>org.junit.runners.BlockJUnit4ClassRunner</code></dd> 676*b2c653efSSorin Basca</dl> 677*b2c653efSSorin Basca</li> 678*b2c653efSSorin Basca</ul> 679*b2c653efSSorin Basca<a name="getDescription--"> 680*b2c653efSSorin Basca<!-- --> 681*b2c653efSSorin Basca</a> 682*b2c653efSSorin Basca<ul class="blockList"> 683*b2c653efSSorin Basca<li class="blockList"> 684*b2c653efSSorin Basca<h4>getDescription</h4> 685*b2c653efSSorin Basca<pre>public org.junit.runner.Description getDescription()</pre> 686*b2c653efSSorin Basca<dl> 687*b2c653efSSorin Basca<dt><span class="overrideSpecifyLabel">Specified by:</span></dt> 688*b2c653efSSorin Basca<dd><code>getDescription</code> in interface <code>org.junit.runner.Describable</code></dd> 689*b2c653efSSorin Basca<dt><span class="overrideSpecifyLabel">Overrides:</span></dt> 690*b2c653efSSorin Basca<dd><code>getDescription</code> in class <code>org.junit.runners.ParentRunner<org.junit.runners.model.FrameworkMethod></code></dd> 691*b2c653efSSorin Basca</dl> 692*b2c653efSSorin Basca</li> 693*b2c653efSSorin Basca</ul> 694*b2c653efSSorin Basca<a name="describeMethod-org.junit.runners.model.FrameworkMethod-"> 695*b2c653efSSorin Basca<!-- --> 696*b2c653efSSorin Basca</a> 697*b2c653efSSorin Basca<ul class="blockList"> 698*b2c653efSSorin Basca<li class="blockList"> 699*b2c653efSSorin Basca<h4>describeMethod</h4> 700*b2c653efSSorin Basca<pre>protected org.junit.runner.Description describeMethod(org.junit.runners.model.FrameworkMethod method)</pre> 701*b2c653efSSorin Basca</li> 702*b2c653efSSorin Basca</ul> 703*b2c653efSSorin Basca<a name="Z:Z:D-java.lang.Object...-"> 704*b2c653efSSorin Basca<!-- --> 705*b2c653efSSorin Basca</a> 706*b2c653efSSorin Basca<ul class="blockListLast"> 707*b2c653efSSorin Basca<li class="blockList"> 708*b2c653efSSorin Basca<h4>$</h4> 709*b2c653efSSorin Basca<pre>public static <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[] $(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>... params)</pre> 710*b2c653efSSorin Basca<div class="block">Shortcut for returning an array of objects. All parameters passed to this 711*b2c653efSSorin Basca method are returned in an <code>Object[]</code> array.</div> 712*b2c653efSSorin Basca<dl> 713*b2c653efSSorin Basca<dt><span class="paramLabel">Parameters:</span></dt> 714*b2c653efSSorin Basca<dd><code>params</code> - Values to be returned in an <code>Object[]</code> array.</dd> 715*b2c653efSSorin Basca<dt><span class="returnLabel">Returns:</span></dt> 716*b2c653efSSorin Basca<dd>Values passed to this method.</dd> 717*b2c653efSSorin Basca</dl> 718*b2c653efSSorin Basca</li> 719*b2c653efSSorin Basca</ul> 720*b2c653efSSorin Basca</li> 721*b2c653efSSorin Basca</ul> 722*b2c653efSSorin Basca</li> 723*b2c653efSSorin Basca</ul> 724*b2c653efSSorin Basca</div> 725*b2c653efSSorin Basca</div> 726*b2c653efSSorin Basca<!-- ========= END OF CLASS DATA ========= --> 727*b2c653efSSorin Basca<!-- ======= START OF BOTTOM NAVBAR ====== --> 728*b2c653efSSorin Basca<div class="bottomNav"><a name="navbar.bottom"> 729*b2c653efSSorin Basca<!-- --> 730*b2c653efSSorin Basca</a> 731*b2c653efSSorin Basca<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> 732*b2c653efSSorin Basca<a name="navbar.bottom.firstrow"> 733*b2c653efSSorin Basca<!-- --> 734*b2c653efSSorin Basca</a> 735*b2c653efSSorin Basca<ul class="navList" title="Navigation"> 736*b2c653efSSorin Basca<li><a href="../overview-summary.html">Overview</a></li> 737*b2c653efSSorin Basca<li><a href="package-summary.html">Package</a></li> 738*b2c653efSSorin Basca<li class="navBarCell1Rev">Class</li> 739*b2c653efSSorin Basca<li><a href="class-use/JUnitParamsRunner.html">Use</a></li> 740*b2c653efSSorin Basca<li><a href="package-tree.html">Tree</a></li> 741*b2c653efSSorin Basca<li><a href="../deprecated-list.html">Deprecated</a></li> 742*b2c653efSSorin Basca<li><a href="../index-all.html">Index</a></li> 743*b2c653efSSorin Basca<li><a href="../help-doc.html">Help</a></li> 744*b2c653efSSorin Basca</ul> 745*b2c653efSSorin Basca</div> 746*b2c653efSSorin Basca<div class="subNav"> 747*b2c653efSSorin Basca<ul class="navList"> 748*b2c653efSSorin Basca<li><a href="../junitparams/FileParameters.html" title="annotation in junitparams"><span class="typeNameLink">Prev Class</span></a></li> 749*b2c653efSSorin Basca<li><a href="../junitparams/Parameters.html" title="annotation in junitparams"><span class="typeNameLink">Next Class</span></a></li> 750*b2c653efSSorin Basca</ul> 751*b2c653efSSorin Basca<ul class="navList"> 752*b2c653efSSorin Basca<li><a href="../index.html?junitparams/JUnitParamsRunner.html" target="_top">Frames</a></li> 753*b2c653efSSorin Basca<li><a href="JUnitParamsRunner.html" target="_top">No Frames</a></li> 754*b2c653efSSorin Basca</ul> 755*b2c653efSSorin Basca<ul class="navList" id="allclasses_navbar_bottom"> 756*b2c653efSSorin Basca<li><a href="../allclasses-noframe.html">All Classes</a></li> 757*b2c653efSSorin Basca</ul> 758*b2c653efSSorin Basca<div> 759*b2c653efSSorin Basca<script type="text/javascript"><!-- 760*b2c653efSSorin Basca allClassesLink = document.getElementById("allclasses_navbar_bottom"); 761*b2c653efSSorin Basca if(window==top) { 762*b2c653efSSorin Basca allClassesLink.style.display = "block"; 763*b2c653efSSorin Basca } 764*b2c653efSSorin Basca else { 765*b2c653efSSorin Basca allClassesLink.style.display = "none"; 766*b2c653efSSorin Basca } 767*b2c653efSSorin Basca //--> 768*b2c653efSSorin Basca</script> 769*b2c653efSSorin Basca</div> 770*b2c653efSSorin Basca<div> 771*b2c653efSSorin Basca<ul class="subNavList"> 772*b2c653efSSorin Basca<li>Summary: </li> 773*b2c653efSSorin Basca<li>Nested | </li> 774*b2c653efSSorin Basca<li>Field | </li> 775*b2c653efSSorin Basca<li><a href="#constructor.summary">Constr</a> | </li> 776*b2c653efSSorin Basca<li><a href="#method.summary">Method</a></li> 777*b2c653efSSorin Basca</ul> 778*b2c653efSSorin Basca<ul class="subNavList"> 779*b2c653efSSorin Basca<li>Detail: </li> 780*b2c653efSSorin Basca<li>Field | </li> 781*b2c653efSSorin Basca<li><a href="#constructor.detail">Constr</a> | </li> 782*b2c653efSSorin Basca<li><a href="#method.detail">Method</a></li> 783*b2c653efSSorin Basca</ul> 784*b2c653efSSorin Basca</div> 785*b2c653efSSorin Basca<a name="skip.navbar.bottom"> 786*b2c653efSSorin Basca<!-- --> 787*b2c653efSSorin Basca</a></div> 788*b2c653efSSorin Basca<!-- ======== END OF BOTTOM NAVBAR ======= --> 789*b2c653efSSorin Basca<p class="legalCopy"><small>Copyright © 2014 <a href="http://pragmatists.pl">Pragmatists</a>. All rights reserved.</small></p> 790*b2c653efSSorin Basca</body> 791*b2c653efSSorin Basca</html> 792