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