One of the characteristics of the increasingly widespread use of object-oriented libraries and the resulting
intensive use of inheritance is the proliferation of dependencies on abstract classes. Since abstract classes
cannot be instantiated, they cannot be tested in isolation using standard execution-based testing strategies.
A standard approach to testing abstract classes is to instantiate a concrete descendant class and test the
features that are inherited.
This paper presents a structured approach that supports the testing of features in abstract classes,
paying particular attention to ensuring that the features tested are those defined in the abstract class. Two
empirical studies are performed on a suite of large Java programs and the results presented. The first study
analyzes the role of abstract classes from a testing perspective. The second study investigates the impact
of the testing strategy on the programs in this suite to demonstrate its feasibility and to comment on the
pragmatics of its use