Auto-generated Spies Increase Test Maintainability

Konstantin Läufer, Loyola University Chicago
John O'Sullivan, Loyola University Chicago
George K. Thiruvathukal, Loyola University Chicago

Submitted to ACM SIGPLAN Scala 2018


We have inspected the test code for the scala.collection.Iterator trait for potential systematic maintainability enhancements. Test spies are stub objects for later verification of interactions with those objects in a testing scenario. According to our preliminary findings, using a mocking framework that supports the automatic generation of test spies, such as Mockito, can lead to a significant improvement of test code in terms of size (in some cases over 70% smaller), readability, and conveying intent by expressing expectations through a declarative domain-specific language. We argue that the resulting test code is not only more maintainable but also a better stylistic match for the Scala community than manually implemented, explicitly stateful test spies.