I'm using hamcrest matchers to compare 2 list<String>
List<String> oldProductNames = (List<String>) ConfigurationManager.getBundle()
.getProperty("productName");
Reporter.log("Unsorted Product Name : " + oldProductNames);
Collections.sort(oldProductNames);
Reporter.log("Sorted Product Name : " + oldProductNames);
List<String> sortedList = getAllProductNamesFromListing("excludeOOS");
Reporter.log("Sorted By Web Site : " + sortedList);
assertThat(oldProductNames, contains(sortedList.toArray()));
Output looks like :
Unsorted Product Name : [nehatestbundlenew2, nehatestbundlenew, beurre de cacahuètes 100% naturel, beurre d'amandes grillées 1 kg, beurre de noix de cajou grillées 1 kg, nuts about whey™, beurre de noisettes 1 kg, beurre de cacahuètes aux 4 graines, beurre de noisettes grillées au chocolat noir, beurre de pistache grillées 1 kg, beurre d'amandes grillées au chocolat noir, beurre d'amandes - noisettes - cajou, beurre de cacahuète à la noix de coco]
Sorted Product Name : [beurre d'amandes - noisettes - cajou, beurre d'amandes grillées 1 kg, beurre d'amandes grillées au chocolat noir, beurre de cacahuète à la noix de coco, beurre de cacahuètes 100% naturel, beurre de cacahuètes aux 4 graines, beurre de noisettes 1 kg, beurre de noisettes grillées au chocolat noir, beurre de noix de cajou grillées 1 kg, beurre de pistache grillées 1 kg, nehatestbundlenew, nehatestbundlenew2, nuts about whey™]
Sorted By Web Site : [beurre d'amandes - noisettes - cajou, beurre d'amandes grillées 1 kg, beurre d'amandes grillées au chocolat noir, beurre de cacahuète à la noix de coco, beurre de cacahuètes 100% naturel, beurre de cacahuètes aux 4 graines, beurre de noisettes 1 kg, beurre de noisettes grillées au chocolat noir, beurre de noix de cajou grillées 1 kg, beurre de pistache grillées 1 kg, nehatestbundlenew, nehatestbundlenew2, nuts about whey™]
But below error for assertThat(oldProductNames, contains(sortedList.toArray()));
java.util.IllegalFormatFlagsException: Flags = ' '
When using assertThat(oldProductNames, contains(sortedList.toArray()));
You are following this pattern assertThat(actual, contains(expected));
oldProductNames
contains %
signs and when passing this into the assertThat
method you are actually passing a format specifier in.
As a result of this, immediate space
following the said format specifier is picked up by the java.util.IllegalFormatFlagsException
as a leading space causing this exception to be thrown.