1*b2c653efSSorin Basca## JUnitParams 1.0.5 release. Release date : ? 2*b2c653efSSorin Basca 3*b2c653efSSorin Basca### Deprecated $ method 4*b2c653efSSorin BascaUtility method `$` was deprecated. It was causing too much problems and we decided not to support it any more. If you wish to keep using it, implement it in your own codebase. 5*b2c653efSSorin Basca 6*b2c653efSSorin Basca### Automatic class name to class object conversion 7*b2c653efSSorin Basca 8*b2c653efSSorin Basca```java 9*b2c653efSSorin Basca 10*b2c653efSSorin Basca @Test 11*b2c653efSSorin Basca @Parameters({"java.lang.Object", "java.lang.String"}) 12*b2c653efSSorin Basca public void passClassAsString(Class<?> clazz) { 13*b2c653efSSorin Basca assertThat(clazz).isIn(java.lang.Object.class, java.lang.String.class); 14*b2c653efSSorin Basca } 15*b2c653efSSorin Basca``` 16*b2c653efSSorin Basca 17*b2c653efSSorin BascaThanks to [adammichalik](https://github.com/adammichalik) for contribution 18*b2c653efSSorin Basca 19*b2c653efSSorin Basca### Support custom annotations for parameter conversion 20*b2c653efSSorin Basca 21*b2c653efSSorin BascaYou can create your own annotations for parameter conversion. Just annotate it with `@Param` and pass it a reference to `Converter` implementation. 22*b2c653efSSorin Basca 23*b2c653efSSorin BascaExample: 24*b2c653efSSorin Basca 25*b2c653efSSorin Basca 26*b2c653efSSorin Basca```java 27*b2c653efSSorin Basca 28*b2c653efSSorin Basca @Retention(RetentionPolicy.RUNTIME) 29*b2c653efSSorin Basca @Target(ElementType.PARAMETER) 30*b2c653efSSorin Basca @Param(converter = FormattedDateConverter.class) 31*b2c653efSSorin Basca public @interface DateParam { 32*b2c653efSSorin Basca 33*b2c653efSSorin Basca String format() default "dd.MM.yyyy"; 34*b2c653efSSorin Basca } 35*b2c653efSSorin Basca 36*b2c653efSSorin Basca public static class FormattedDateConverter implements Converter<DateParam, Date> { 37*b2c653efSSorin Basca 38*b2c653efSSorin Basca private String format; 39*b2c653efSSorin Basca 40*b2c653efSSorin Basca @Override 41*b2c653efSSorin Basca public void initialize(DateParam annotation) { 42*b2c653efSSorin Basca this.format = annotation.format(); 43*b2c653efSSorin Basca } 44*b2c653efSSorin Basca 45*b2c653efSSorin Basca @Override 46*b2c653efSSorin Basca public Date convert(Object param) throws ConversionFailedException { 47*b2c653efSSorin Basca try { 48*b2c653efSSorin Basca return new SimpleDateFormat(format).parse(param.toString()); 49*b2c653efSSorin Basca } catch (ParseException e) { 50*b2c653efSSorin Basca throw new ConversionFailedException("failed"); 51*b2c653efSSorin Basca } 52*b2c653efSSorin Basca } 53*b2c653efSSorin Basca } 54*b2c653efSSorin Basca``` 55*b2c653efSSorin Basca 56*b2c653efSSorin BascaUsage example: 57*b2c653efSSorin Basca 58*b2c653efSSorin Basca```java 59*b2c653efSSorin Basca 60*b2c653efSSorin Basca @Test 61*b2c653efSSorin Basca @Parameters({"2012-12-01"}) 62*b2c653efSSorin Basca public void testWithConvertedDate(@DateParam Date date) { 63*b2c653efSSorin Basca assertThat(...); 64*b2c653efSSorin Basca } 65*b2c653efSSorin Basca``` 66*b2c653efSSorin Basca 67*b2c653efSSorin BascaThanks to [bbobcik](https://github.com/bbobcik) for inspiration 68*b2c653efSSorin Basca 69*b2c653efSSorin Basca### CustomParameters 70*b2c653efSSorin Basca 71*b2c653efSSorin BascaYou can create custom annotations for parameter providers. `@FileParameters` have been refactored to use this mechanism and should serve as a perfect usage example. 72*b2c653efSSorin Basca 73*b2c653efSSorin Basca```java 74*b2c653efSSorin Basca 75*b2c653efSSorin Basca @Retention(RetentionPolicy.RUNTIME) 76*b2c653efSSorin Basca @Target(ElementType.METHOD) 77*b2c653efSSorin Basca @CustomParameters(provider = FileParametersProvider.class) 78*b2c653efSSorin Basca public @interface FileParameters { 79*b2c653efSSorin Basca 80*b2c653efSSorin Basca String fileLocation(); 81*b2c653efSSorin Basca 82*b2c653efSSorin Basca } 83*b2c653efSSorin Basca 84*b2c653efSSorin Basca public class FileParametersProvider implements ParametersProvider<FileParameters> { 85*b2c653efSSorin Basca 86*b2c653efSSorin Basca private String fileLocation; 87*b2c653efSSorin Basca 88*b2c653efSSorin Basca @Override 89*b2c653efSSorin Basca public void initialize(FileParameters fileParameters) { 90*b2c653efSSorin Basca this.fileLocation = fileParameters.fileLocation(); 91*b2c653efSSorin Basca } 92*b2c653efSSorin Basca 93*b2c653efSSorin Basca @Override 94*b2c653efSSorin Basca public Object[] getParameters() { 95*b2c653efSSorin Basca return paramsFromFile(fileLocation); 96*b2c653efSSorin Basca } 97*b2c653efSSorin Basca 98*b2c653efSSorin Basca ... 99*b2c653efSSorin Basca } 100*b2c653efSSorin Basca 101*b2c653efSSorin Basca``` 102*b2c653efSSorin Basca 103*b2c653efSSorin Basca### @CombinedParameters 104*b2c653efSSorin Basca 105*b2c653efSSorin BascaThanks to [piekarskim](https://github.com/piekarskim) The issue #1 is fixed. 106*b2c653efSSorin BascaUsing this annotation will result in creating a n-fold cartesian product of parameter values effectively testing each possible combination. 107*b2c653efSSorin BascaSince an example is worth a thousand words: 108*b2c653efSSorin Basca 109*b2c653efSSorin BascaSuch annotated test method: 110*b2c653efSSorin Basca 111*b2c653efSSorin Basca```java 112*b2c653efSSorin Basca 113*b2c653efSSorin Basca @Test 114*b2c653efSSorin Basca @CombinedParameters({"a,b", "1,2"}) 115*b2c653efSSorin Basca public void calledWithCartesianProduct(String character, Integer number) { 116*b2c653efSSorin Basca ... 117*b2c653efSSorin Basca } 118*b2c653efSSorin Basca``` 119*b2c653efSSorin Basca 120*b2c653efSSorin BascaWill be called 4 times with parameters: 121*b2c653efSSorin Basca 122*b2c653efSSorin Basca``` 123*b2c653efSSorin Basca a 1 124*b2c653efSSorin Basca a 2 125*b2c653efSSorin Basca b 1 126*b2c653efSSorin Basca b 2 127*b2c653efSSorin Basca``` 128*b2c653efSSorin Basca 129*b2c653efSSorin Basca 130*b2c653efSSorin Basca### Bug fixes and improvements 131*b2c653efSSorin Basca 132*b2c653efSSorin BascaThanks to the rest of contributors for lots of bug fixes and improvements: 133*b2c653efSSorin Basca 134*b2c653efSSorin Basca* [jtbeckha](https://github.com/jtbeckha) 135*b2c653efSSorin Basca* [szpak](https://github.com/szpak) 136*b2c653efSSorin Basca* [mkordas](https://github.com/mkordas) 137*b2c653efSSorin Basca* [davidwiking](https://github.com/davidwiking) 138*b2c653efSSorin Basca* [bennetelli](https://github.com/bennetelli) 139*b2c653efSSorin Basca 140*b2c653efSSorin Basca 141*b2c653efSSorin Basca## JUnitParams 1.0.4 release. Release date : 2015-01-23 142*b2c653efSSorin Basca 143*b2c653efSSorin Basca### Configurable test case name 144*b2c653efSSorin BascaNew annotation `@TestCaseName` that can be used for test case name configuration: 145*b2c653efSSorin Basca 146*b2c653efSSorin Basca```java 147*b2c653efSSorin Basca @Test 148*b2c653efSSorin Basca @Parameters({ "1,1", "2,2" }) 149*b2c653efSSorin Basca @TestCaseName("factorial({0}) = {1}") 150*b2c653efSSorin Basca public void custom_names_for_test_case(int argument, int result) { } 151*b2c653efSSorin Basca``` 152*b2c653efSSorin Basca 153*b2c653efSSorin Bascawill produce tests with names: 154*b2c653efSSorin Basca 155*b2c653efSSorin Basca``` 156*b2c653efSSorin Bascafactorial(1) = 1 157*b2c653efSSorin Bascafactorial(2) = 2 158*b2c653efSSorin Basca``` 159*b2c653efSSorin Basca 160*b2c653efSSorin BascaThanks to [Menliat](https://github.com/Menliat) for contribution. 161*b2c653efSSorin Basca 162*b2c653efSSorin Basca 163*b2c653efSSorin Basca### Allow usage of enums as a data source 164*b2c653efSSorin Basca 165*b2c653efSSorin BascaParameters annotation now allows passing Enum values as parameters 166*b2c653efSSorin Basca 167*b2c653efSSorin Basca``` 168*b2c653efSSorin Basca@Parameters(source = Fruit.class) 169*b2c653efSSorin Basca``` 170*b2c653efSSorin Basca 171*b2c653efSSorin BascaThanks to [ukcrpb6](https://github.com/ukcrpb6) for contribution. 172*b2c653efSSorin Basca 173*b2c653efSSorin Basca 174*b2c653efSSorin Basca### Test results filtering fixed 175*b2c653efSSorin Basca 176*b2c653efSSorin BascaWhen starting a single test method from within an IDE, the tests results were not shown up properly in the results tab. 177*b2c653efSSorin BascaIts fixed now thanks to [jerzykrlk](https://github.com/jerzykrlk) 178*b2c653efSSorin Basca 179*b2c653efSSorin Basca### Bug fixes and improvements 180*b2c653efSSorin Basca 181*b2c653efSSorin BascaThanks to the rest of contributors for lots of bug fixes and improvements: 182*b2c653efSSorin Basca 183*b2c653efSSorin Basca* [wojtek-szymanski](https://github.com/wojtek-szymanski) 184*b2c653efSSorin Basca* [Jacobus2k](https://github.com/Jacobus2k) 185*b2c653efSSorin Basca* [justhalf](https://github.com/justhalf) 186*b2c653efSSorin Basca* [szpak](https://github.com/szpak) 187*b2c653efSSorin Basca* [v-dev](https://github.com/v-dev) 188