## JUnitParams 1.0.5 release. Release date : ? ### Deprecated $ method Utility 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. ### Automatic class name to class object conversion ```java @Test @Parameters({"java.lang.Object", "java.lang.String"}) public void passClassAsString(Class clazz) { assertThat(clazz).isIn(java.lang.Object.class, java.lang.String.class); } ``` Thanks to [adammichalik](https://github.com/adammichalik) for contribution ### Support custom annotations for parameter conversion You can create your own annotations for parameter conversion. Just annotate it with `@Param` and pass it a reference to `Converter` implementation. Example: ```java @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.PARAMETER) @Param(converter = FormattedDateConverter.class) public @interface DateParam { String format() default "dd.MM.yyyy"; } public static class FormattedDateConverter implements Converter { private String format; @Override public void initialize(DateParam annotation) { this.format = annotation.format(); } @Override public Date convert(Object param) throws ConversionFailedException { try { return new SimpleDateFormat(format).parse(param.toString()); } catch (ParseException e) { throw new ConversionFailedException("failed"); } } } ``` Usage example: ```java @Test @Parameters({"2012-12-01"}) public void testWithConvertedDate(@DateParam Date date) { assertThat(...); } ``` Thanks to [bbobcik](https://github.com/bbobcik) for inspiration ### CustomParameters You can create custom annotations for parameter providers. `@FileParameters` have been refactored to use this mechanism and should serve as a perfect usage example. ```java @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @CustomParameters(provider = FileParametersProvider.class) public @interface FileParameters { String fileLocation(); } public class FileParametersProvider implements ParametersProvider { private String fileLocation; @Override public void initialize(FileParameters fileParameters) { this.fileLocation = fileParameters.fileLocation(); } @Override public Object[] getParameters() { return paramsFromFile(fileLocation); } ... } ``` ### @CombinedParameters Thanks to [piekarskim](https://github.com/piekarskim) The issue #1 is fixed. Using this annotation will result in creating a n-fold cartesian product of parameter values effectively testing each possible combination. Since an example is worth a thousand words: Such annotated test method: ```java @Test @CombinedParameters({"a,b", "1,2"}) public void calledWithCartesianProduct(String character, Integer number) { ... } ``` Will be called 4 times with parameters: ``` a 1 a 2 b 1 b 2 ``` ### Bug fixes and improvements Thanks to the rest of contributors for lots of bug fixes and improvements: * [jtbeckha](https://github.com/jtbeckha) * [szpak](https://github.com/szpak) * [mkordas](https://github.com/mkordas) * [davidwiking](https://github.com/davidwiking) * [bennetelli](https://github.com/bennetelli) ## JUnitParams 1.0.4 release. Release date : 2015-01-23 ### Configurable test case name New annotation `@TestCaseName` that can be used for test case name configuration: ```java @Test @Parameters({ "1,1", "2,2" }) @TestCaseName("factorial({0}) = {1}") public void custom_names_for_test_case(int argument, int result) { } ``` will produce tests with names: ``` factorial(1) = 1 factorial(2) = 2 ``` Thanks to [Menliat](https://github.com/Menliat) for contribution. ### Allow usage of enums as a data source Parameters annotation now allows passing Enum values as parameters ``` @Parameters(source = Fruit.class) ``` Thanks to [ukcrpb6](https://github.com/ukcrpb6) for contribution. ### Test results filtering fixed When starting a single test method from within an IDE, the tests results were not shown up properly in the results tab. Its fixed now thanks to [jerzykrlk](https://github.com/jerzykrlk) ### Bug fixes and improvements Thanks to the rest of contributors for lots of bug fixes and improvements: * [wojtek-szymanski](https://github.com/wojtek-szymanski) * [Jacobus2k](https://github.com/Jacobus2k) * [justhalf](https://github.com/justhalf) * [szpak](https://github.com/szpak) * [v-dev](https://github.com/v-dev)