aboutsummaryrefslogtreecommitdiffstats
path: root/apidocs/junitparams/JUnitParamsRunner.html
blob: 5b109899cdeb3eeb80a7f9daf45aba7d0f556ece (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="pl">
<head>
<!-- Generated by javadoc (1.8.0) on Mon Jul 28 12:08:59 CEST 2014 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JUnitParamsRunner (JUnitParams 1.0.3-SNAPSHOT API)</title>
<meta name="date" content="2014-07-28">
<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
<script type="text/javascript" src="../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="JUnitParamsRunner (JUnitParams 1.0.3-SNAPSHOT API)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/JUnitParamsRunner.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../deprecated-list.html">Deprecated</a></li>
<li><a href="../index-all.html">Index</a></li>
<li><a href="../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../junitparams/FileParameters.html" title="annotation in junitparams"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../junitparams/Parameters.html" title="annotation in junitparams"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../index.html?junitparams/JUnitParamsRunner.html" target="_top">Frames</a></li>
<li><a href="JUnitParamsRunner.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">junitparams</div>
<h2 title="Class JUnitParamsRunner" class="title">Class JUnitParamsRunner</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<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>
<li>
<ul class="inheritance">
<li>org.junit.runner.Runner</li>
<li>
<ul class="inheritance">
<li>org.junit.runners.ParentRunner&lt;org.junit.runners.model.FrameworkMethod&gt;</li>
<li>
<ul class="inheritance">
<li>org.junit.runners.BlockJUnit4ClassRunner</li>
<li>
<ul class="inheritance">
<li>junitparams.JUnitParamsRunner</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>org.junit.runner.Describable, org.junit.runner.manipulation.Filterable, org.junit.runner.manipulation.Sortable</dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">JUnitParamsRunner</span>
extends org.junit.runners.BlockJUnit4ClassRunner</pre>
<div class="block"><h1>JUnitParams</h1><br>
 <p>
 This is a JUnit runner for parameterised tests that don't suck. Annotate your test class with
 <code>&#064;RunWith(JUnitParamsRunner.class)</code> and place
 <code>&#064;Parameters</code> annotation on each test method which requires
 parameters. Nothing more needed - no special structure, no dirty tricks.
 </p>
 <br>
 <h2>Contents</h2> <b> <a href="#p1">1. Parameterising tests</a><br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#a">a. Parameterising tests via values
 in annotation</a><br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#b">b. Parameterising tests via a
 method that returns parameter values</a><br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#c">c. Parameterising tests via
 external classes</a><br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#d">d. Loading parameters from files</a><br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#d">e. Converting parameter values</a><br>
 <a href="#p2">2. Usage with Spring</a><br>
 <a href="#p3">3. Other options</a><br>
 </b><br>
 <h3 id="p1">1. Parameterising tests</h3> Parameterised tests are a great way
 to limit the amount of test code when you need to test the same code under
 different conditions. Ever tried to do it with standard JUnit tools like
 Parameterized runner or Theories? I always thought they're so awkward to use,
 that I've written this library to help all those out there who'd like to have
 a handy tool.
 
 So here we go. There are a few different ways to use JUnitParams, I will try
 to show you all of them here.
 
 <h4 id="a">a. Parameterising tests via values in annotation</h4>
 <p>
 You can parameterise your test with values defined in annotations. Just pass
 sets of test method argument values as an array of Strings, where each string
 contains the argument values separated by a comma or a pipe "|".
 
 <pre>
   &#064;Test
   &#064;Parameters({ "20, Tarzan", "0, Jane" })
   public void cartoonCharacters(int yearsInJungle, String person) {
       ...
   }
 </pre>
 
 Sometimes you may be interested in passing enum values as parameters, then
 you can just write them as Strings like this:
 
 <pre>
 &#064;Test
 &#064;Parameters({ &quot;FROM_JUNGLE&quot;, &quot;FROM_CITY&quot; })
 public void passEnumAsParam(PersonType person) {
 }
 </pre>

 <h4 id="b">b. Parameterising tests via a method that returns parameter values
 </h4>
 <p>
 Obivously passing parameters as strings is handy only for trivial situations,
 that's why for normal cases you have a method that gives you a collection of
 parameters:
 
 <pre>
   &#064;Test
   &#064;Parameters(method = "cartoonCharacters")
   public void cartoonCharacters(int yearsInJungle, String person) {
       ...
   }
   private Object[] cartoonCharacters() {
      return $(
          $(0, "Tarzan"),
          $(20, "Jane")
      );
   }
 </pre>
 
 Where <code>$(...)</code> is a static method defined in
 <code>JUnitParamsRunner</code> class, which returns its parameters as a
 <code>Object[]</code> array. Just a shortcut, so that you don't need to write the ugly <code>new Object[] {}</code> kind of stuff.

 <p>
 <code>method</code> can take more than one method name - you can pass as many
 of them as you want, separated by commas. This enables you to divide your
 test cases e.g. into categories.
 <pre>
   &#064;Test
   &#064;Parameters(method = "menCharactes, womenCharacters")
   public void cartoonCharacters(int yearsInJungle, String person) {
       ...
   }
   private Object[] menCharacters() {
      return $(
          $(20, "Tarzan"),
          $(2, "Chip"),
          $(2, "Dale")
      );
   }
   private Object[] womenCharacters() {
      return $(
          $(0, "Jane"),
          $(18, "Pocahontas")
      );
   }
 </pre>
 <p>
 The <code>method</code> argument of a <code>@Parameters</code> annotation can
 be ommited if the method that provides parameters has a the same name as the
 test, but prefixed by <code>parametersFor</code>. So our example would look
 like this:
 
 <pre>
   &#064;Test
   &#064;Parameters
   public void cartoonCharacters(int yearsInJungle, String person) {
       ...
   }
   private Object[] parametersForCartoonCharacters() {
      return $(
          $(0, "Tarzan"),
          $(20, "Jane")
      );
   }
 </pre>

 <p>
 If you don't like returning untyped values and arrays, you can equally well
 return any Iterable of concrete objects:
 
 <pre>
   &#064;Test
   &#064;Parameters
   public void cartoonCharacters(Person character) {
       ...
   }
   private List&lt;Person&gt; parametersForCartoonCharacters() {
      return Arrays.asList(
          new Person(0, "Tarzan"),
          new Person(20, "Jane")
      );
   }
 </pre>
 
 If we had more than just two Person's to make, we would get redundant,
 so JUnitParams gives you a simplified way of creating objects to be passed as
 params. You can omit the creation of the objects and just return their constructor
 argument values like this:
 
 <pre>
   &#064;Test
   &#064;Parameters
   public void cartoonCharacters(Person character) {
       ...
   }
   private List&lt;?&gt; parametersForCartoonCharacters() {
      return Arrays.asList(
          $(0, "Tarzan"),
          $(20, "Jane")
      );
   }
 </pre>
 And JUnitParams will invoke the appropriate constructor (<code>new Person(int age, String name)</code> in this case.)
 <b>If you want to use it, watch out! Automatic refactoring of constructor
 arguments won't be working here!</b>
 
 <p>
 You can also define methods that provide parameters in subclasses and use
 them in test methods defined in superclasses, as well as redefine data
 providing methods in subclasses to be used by test method defined in a
 superclass. That you can doesn't mean you should. Inheritance in tests is
 usually a code smell (readability hurts), so make sure you know what you're
 doing.
 
 <h4 id="c">c. Parameterising tests via external classes</h4>
 <p>
 For more complex cases you may want to externalise the method that provides
 parameters or use more than one method to provide parameters to a single test
 method. You can easily do that like this:
 
 <pre>
   &#064;Test
   &#064;Parameters(source = CartoonCharactersProvider.class)
   public void testReadyToLiveInJungle(int yearsInJungle, String person) {
       ...
   }
   ...
   class CartoonCharactersProvider {
      public static Object[] provideCartoonCharactersManually() {
          return $(
              $(0, "Tarzan"),
              $(20, "Jane")
          );
      }
      public static Object[] provideCartoonCharactersFromDB() {
          return cartoonsRepository.loadCharacters();
      }
   }
 </pre>
 
 All methods starting with <code>provide</code> are used as parameter
 providers.
 
 <p>
 Sometimes though you may want to use just one or few methods of some class to
 provide you parameters. This can be done as well like this:
 
 <pre>
   &#064;Test
   &#064;Parameters(source = CartoonCharactersProvider.class, method = "cinderellaCharacters,snowwhiteCharacters")
   public void testPrincesses(boolean isAPrincess, String characterName) {
       ...
   }
 </pre>

 
 <h4 id="d">d. Loading parameters from files</h4> You may be interested in
 loading parameters from a file. This is very easy if it's a CSV file with
 columns in the same order as test method parameters:
 
 <pre>
   &#064;Test
   &#064;FileParameters("cartoon-characters.csv")
   public void shouldSurviveInJungle(int yearsInJungle, String person) {
       ...
   }
 </pre>
 
 But if you want to process the data from the CSV file a bit to use it in the
 test method arguments, you
 need to use an <code>IdentityMapper</code>. Look:
 
 <pre>
   &#064;Test
   &#064;FileParameters(value = "cartoon-characters.csv", mapper = CartoonMapper.class)
   public void shouldSurviveInJungle(Person person) {
       ...
   }
   
   public class CartoonMapper extends IdentityMapper {
     &#064;Override
     public Object[] map(Reader reader) {
         Object[] map = super.map(reader);
         List&lt;Object[]&gt; result = new LinkedList&lt;Object[]&gt;();
         for (Object lineObj : map) {
             String line = (String) lineObj; // line in a format just like in the file
             result.add(new Object[] { ..... }); // some format edible by the test method
         }
         return result.toArray();
     }
 
 }
 </pre>

 A CSV files with a header are also supported with the use of <code>CsvWithHeaderMapper</code> class.
 
 You may also want to use a completely different file format, like excel or
 something. Then just parse it yourself:
 
 <pre>
   &#064;Test
   &#064;FileParameters(value = "cartoon-characters.xsl", mapper = ExcelCartoonMapper.class)
   public void shouldSurviveInJungle(Person person) {
       ...
   }
   
   public class CartoonMapper implements DataMapper {
     &#064;Override
     public Object[] map(Reader fileReader) {
         ...
     }
 }
 </pre>
 
 As you see, you don't need to open or close the file. Just read it from the
 reader and parse it the way you wish.

 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
 the classpath by prefixing the file name with <code>classpath:</code>

 <h4 id="e">e. Converting parameter values</h4>
 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
 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
 without manually converting the value in the test. This is where the converters become handy. It's enough to annotate a parameter with
 a <code>&#064;ConvertParam</code> annotation, give it a converter class and possibly some options (like date format in this case) and
 you're done. Here's an example:
 <pre>
     &#064;Test
     &#064;Parameters({ "01.12.2012, A" })
     public void convertMultipleParams(
                  &#064;ConvertParam(value = StringToDateConverter.class, options = "dd.MM.yyyy") Date date,
                  &#064;ConvertParam(LetterToASCIIConverter.class) int num) {

         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);

         assertEquals(2012, calendar.get(Calendar.YEAR));
         assertEquals(11, calendar.get(Calendar.MONTH));
         assertEquals(1, calendar.get(Calendar.DAY_OF_MONTH));

         assertEquals(65, num);
     }
 </pre>
 
 <h3 id="p2">2. Usage with Spring</h3>
 <p>
 You can easily use JUnitParams together with Spring. The only problem is that
 Spring's test framework is based on JUnit runners, and JUnit allows only one
 runner to be run at once. Which would normally mean that you could use only
 one of Spring or JUnitParams. Luckily we can cheat Spring a little by adding
 this to your test class:
 
 <pre>
 private TestContextManager testContextManager;
 
 &#064;Before
 public void init() throws Exception {
     this.testContextManager = new TestContextManager(getClass());
     this.testContextManager.prepareTestInstance(this);
 }
 </pre>
 
 This lets you use in your tests anything that Spring provides in its test
 framework.
 
 <h3 id="p3">3. Other options</h3> <h4>Customizing how parameter objects are
 shown in IDE</h4>
 <p>
 Tests show up in your IDE as a tree with test class name being the root, test
 methods being nodes, and parameter sets being the leaves. If you want to
 customize the way an parameter object is shown, create a <b>toString</b>
 method for it.
 <h4>Empty parameter sets</h4>
 <p>
 If you create a parameterised test, but won't give it any parameter sets, it
 will be ignored and you'll be warned about it.
 <h4>Parameterised test with no parameters</h4>
 <p>
 If for some reason you want to have a normal non-parameterised method to be
 annotated with @Parameters, then fine, you can do it. But it will be ignored
 then, since there won't be any params for it, and parameterised tests need
 parameters to execute properly (parameters are a part of test setup, right?)
 <h4>JUnit Rules</h4>
 <p>
 The runner for parameterised test is trying to keep all the @Rule's running,
 but if something doesn't work - let me know. It's pretty tricky, since the
 rules in JUnit are chained, but the chain is kind of... unstructured, so
 sometimes I need to guess how to call the next element in chain. If you have
 your own rule, make sure it has a field of type Statement which is the next
 statement in chain to call.
 <h4>Test inheritance</h4>
 <p>
 Although usually a bad idea, since it makes tests less readable, sometimes
 inheritance is the best way to remove repetitions from tests. JUnitParams is
 fine with inheritance - you can define a common test in the superclass, and
 have separate parameters provider methods in the subclasses. Also the other
 way around is ok, you can define parameter providers in superclass and have
 tests in subclasses uses them as their input.</div>
<dl>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Pawel Lipinski (lipinski.pawel@gmail.com)</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<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>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<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>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<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>
<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>
<div class="block">Shortcut for returning an array of objects.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<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>
</tr>
<tr id="i2" class="altColor">
<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>
<td class="colLast"><code><span class="memberNameLink"><a href="../junitparams/JUnitParamsRunner.html#computeTestMethods--">computeTestMethods</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected org.junit.runner.Description</code></td>
<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>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>org.junit.runner.Description</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../junitparams/JUnitParamsRunner.html#getDescription--">getDescription</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected org.junit.runners.model.Statement</code></td>
<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,
             <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>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<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,
        org.junit.runner.notification.RunNotifier&nbsp;notifier)</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.junit.runners.BlockJUnit4ClassRunner">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.junit.runners.BlockJUnit4ClassRunner</h3>
<code>createTest, describeChild, getChildren, getTestRules, methodBlock, possiblyExpectingExceptions, rules, testName, validateConstructor, validateFields, validateInstanceMethods, validateNoNonStaticInnerClass, validateOnlyOneConstructor, validateTestMethods, validateZeroArgConstructor, withAfters, withBefores, withPotentialTimeout</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.junit.runners.ParentRunner">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.junit.runners.ParentRunner</h3>
<code>childrenInvoker, classBlock, classRules, filter, getName, getRunnerAnnotations, getTestClass, run, runLeaf, setScheduler, sort, validatePublicVoidNoArgMethods, withAfterClasses, withBeforeClasses</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.junit.runner.Runner">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;org.junit.runner.Runner</h3>
<code>testCount</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<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>
<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>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="JUnitParamsRunner-java.lang.Class-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>JUnitParamsRunner</h4>
<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)
                  throws org.junit.runners.model.InitializationError</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>org.junit.runners.model.InitializationError</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="collectInitializationErrors-java.util.List-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>collectInitializationErrors</h4>
<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>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>collectInitializationErrors</code>&nbsp;in class&nbsp;<code>org.junit.runners.BlockJUnit4ClassRunner</code></dd>
</dl>
</li>
</ul>
<a name="runChild-org.junit.runners.model.FrameworkMethod-org.junit.runner.notification.RunNotifier-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>runChild</h4>
<pre>protected&nbsp;void&nbsp;runChild(org.junit.runners.model.FrameworkMethod&nbsp;method,
                        org.junit.runner.notification.RunNotifier&nbsp;notifier)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>runChild</code>&nbsp;in class&nbsp;<code>org.junit.runners.BlockJUnit4ClassRunner</code></dd>
</dl>
</li>
</ul>
<a name="computeTestMethods--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeTestMethods</h4>
<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>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>computeTestMethods</code>&nbsp;in class&nbsp;<code>org.junit.runners.BlockJUnit4ClassRunner</code></dd>
</dl>
</li>
</ul>
<a name="methodInvoker-org.junit.runners.model.FrameworkMethod-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>methodInvoker</h4>
<pre>protected&nbsp;org.junit.runners.model.Statement&nbsp;methodInvoker(org.junit.runners.model.FrameworkMethod&nbsp;method,
                                                          <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>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>methodInvoker</code>&nbsp;in class&nbsp;<code>org.junit.runners.BlockJUnit4ClassRunner</code></dd>
</dl>
</li>
</ul>
<a name="getDescription--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDescription</h4>
<pre>public&nbsp;org.junit.runner.Description&nbsp;getDescription()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>getDescription</code>&nbsp;in interface&nbsp;<code>org.junit.runner.Describable</code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>getDescription</code>&nbsp;in class&nbsp;<code>org.junit.runners.ParentRunner&lt;org.junit.runners.model.FrameworkMethod&gt;</code></dd>
</dl>
</li>
</ul>
<a name="describeMethod-org.junit.runners.model.FrameworkMethod-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>describeMethod</h4>
<pre>protected&nbsp;org.junit.runner.Description&nbsp;describeMethod(org.junit.runners.model.FrameworkMethod&nbsp;method)</pre>
</li>
</ul>
<a name="Z:Z:D-java.lang.Object...-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>$</h4>
<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>
<div class="block">Shortcut for returning an array of objects. All parameters passed to this
 method are returned in an <code>Object[]</code> array.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>params</code> - Values to be returned in an <code>Object[]</code> array.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Values passed to this method.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/JUnitParamsRunner.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../deprecated-list.html">Deprecated</a></li>
<li><a href="../index-all.html">Index</a></li>
<li><a href="../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../junitparams/FileParameters.html" title="annotation in junitparams"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../junitparams/Parameters.html" title="annotation in junitparams"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../index.html?junitparams/JUnitParamsRunner.html" target="_top">Frames</a></li>
<li><a href="JUnitParamsRunner.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2014 <a href="http://pragmatists.pl">Pragmatists</a>. All rights reserved.</small></p>
</body>
</html>