From: Nicolas L. <nic...@th...> - 2002-10-24 11:37:30
Attachments:
java.util.collection.junit.testcases.zip
|
Hi, I am currently discovering the marvels of JUnit... I can finally implement what I have long needed, a re-usable set of test cases for implementations of some interfaces of the Java Collection framework. You may find it useful to check whether your custom implementations of java.util.Collection or java.util.List does conform to the contracts found in the Javadocs or not. Maybe this already exists, anyway I wrote those test cases as a way to experiment with JUnit. If such a thing already exists, I'll be delighted to throw away my work and use a more thoroughly implemented test suite :). If it doesn't exists yet, then I'll be happy to donate this code to the JUnit project, so that it can be improved by others and extended (there are test cases to be written for implementations of Set, OrderedSet, Map and SortedMap). There are two test cases : CollectionTest, and ListTest, which inherits from CollectionTest. To test your own collection class, just inherit from CollectionTest and override the buildTestCollection() method, or inherit from ListTest and override the buildTestList() method. The test performed are those I could think of by reading the contracts from the Javadocs, but I'm sure more tricky tests could be written. Moreover, I don't know if I should be catching UnsupportedOperationException and not report these as failures. Anyway, a proper test suite like this could be a great time saver and a great mean to ensure the normalisation of various APIs towards the usage of the wonderful Collections framework. Indeed, this framework is great but there is a big part of the contracts that is not written in the interfaces, but just in plain text in the Javadoc. Thus, it is easy to write implementations that are slightly not compliant, which is a pain in the neck to debug afterwards, when the collection implementations are used in other frameworks. Using JUnit and unit tests are a way to ensure that the contracts are written in some code, after all, even if it's not in the interfaces. As the zipped file is very small, I think it's ok to attach it to this mail. Regards, Nicolas --------------------------------------- Nicolas Lehuen CTO, The CRM Company +33 (0)1 55 77 28 16 mailto:nic...@th... http://www.thecrmcompany.com/ |