Good Unit Test CheckList

Here are a few items I try to respect every time I write unit tests.

  • My test class is testing one and only one class
  • My methods are testing one and only one method at a time
  • My variables and methods names are explicit
  • My test cases are easy to read by human
  • My tests are also testing expected exception with @Test(expected=MyException.class)
  • My tests don’t need access to database
  • My tests don’t need access to network resources
  • My tests respect the usual clean code standards (length of lines, cyclomatic complexity,…)
  • My tests control side effects, limit values (max, min) and null variables (even if it throws an exception)
  • My tests can be run any time on any place without needing configuration
  • My tests are concrete (ex. dates are hardwired, not computed every time, strings too…)
  • My tests use mock to simulate/stub complex class structure or methods
I’m pretty sure there are more.  Any idea ?

Author: Jean-Baptiste Rieu

Ingénieur logiciel, passé du litteraire au scientifique. Toujours curieux, passionné d'IHM, de visualisation et d'experience utilisateur. Chercheur en méthodes pour développer la créativité. Amoureux de la Corée, pays de mon épouse. Diplômé de l'Institut de Formation d'Ingénieur de Paris-Sud XI (IFIPS).