Algebraic theory of processes
Software testing based on formal specifications: a theory and a tool
Software Engineering Journal
Modular Algebraic Nets to Specify Concurrent Systems
IEEE Transactions on Software Engineering
Endo-testing: unit testing with mock objects
Extreme programming examined
A Theory of Specification-Based Testing for Object-Oriented Software
EDCC-2 Proceedings of the Second European Dependable Computing Conference on Dependable Computing
Test Driven development: A Practical Guide
Test Driven development: A Practical Guide
A Strategy for Selecting Synchronization Sequences to Test Concurrent Object-Oriented Software
COMPSAC '03 Proceedings of the 27th Annual International Conference on Computer Software and Applications
Validating Behavioral Component Interfaces in Rewriting Logic
Fundamenta Informaticae - Behavior of Composed Concurrent Systems: Logic and Reasoning
Hi-index | 0.00 |
In the context of test-driven development for object-oriented programs, mock objects are increasingly used for unit testing. Several Java mock object frameworks exist, which all have in common that mock objects, realizing the test environment, are directly specified at the Java program level. Though using directly the programming language may facilitate acceptance by software developers at first sight, the entailed syntax noise sometimes distracts from the actual test specification, speaking about interaction traces. We propose a Java-like test specification language, which allows to describe the behavior of the test harness in terms of the expected interaction traces between the program and its environment. The language is tailor-made for Java, e.g., in that it reflects the nested calls and return structure of thread-based interaction at the interface. From a given trace specification, a testing environment, i.e., a set of classes for mock objects, is synthesized. The design of the specification language is a careful balance between two goals: using programming constructs in Java-like notation helps the programmer to specify the interaction without having to learn a completely new specification notation. On the other hand, additional expressions in the specification language allow to specify the desired trace behavior in a concise, abstract way, hiding the intricacies of the required synchronization code at the lower-level programming language.