An automatic refactoring framework for replacing test-production inheritance by mocking mechanism

Xiao Wang, Lu Xiao, Tingting Yu, Anne Woepse, Sunny Wong

    Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

    10 Scopus citations

    Abstract

    Unit testing focuses on verifying the functions of individual units of a software system. It is challenging due to the high inter-dependencies among software units. Developers address this by mocking-replacing the dependency by a "faked"object. Despite the existence of powerful, dedicated mocking frameworks, developers often turn to a "hand-rolled"approach-inheritance. That is, they create a subclass of the dependent class and mock its behavior through method overriding. However, this requires tedious implementation and compromises the design quality of unit tests. This work contributes a fully automated refactoring framework to identify and replace the usage of inheritance by using Mockito-a well received mocking framework. Our approach is built upon the empirical experience from five open source projects that use inheritance for mocking. We evaluate our approach on four other projects. Results show that our framework is efficient, generally applicable to new datasets, mostly preserves test case behaviors in detecting defects (in the form of mutants), and decouples test code from production code. The qualitative evaluation by experienced developers suggests that the auto-refactoring solutions generated by our framework improve the quality of the unit test cases in various aspects, such as making test conditions more explicit, as well as improved cohesion, readability, understandability, and maintainability with test cases.

    Original languageEnglish
    Title of host publicationESEC/FSE 2021 - Proceedings of the 29th ACM Joint Meeting European Software Engineering Conference and Symposium on the Foundations of Software Engineering
    EditorsDiomidis Spinellis
    Pages540-552
    Number of pages13
    ISBN (Electronic)9781450385626
    DOIs
    StatePublished - 20 Aug 2021
    Event29th ACM Joint Meeting European Software Engineering Conference and Symposium on the Foundations of Software Engineering, ESEC/FSE 2021 - Virtual, Online, Greece
    Duration: 23 Aug 202128 Aug 2021

    Publication series

    NameESEC/FSE 2021 - Proceedings of the 29th ACM Joint Meeting European Software Engineering Conference and Symposium on the Foundations of Software Engineering

    Conference

    Conference29th ACM Joint Meeting European Software Engineering Conference and Symposium on the Foundations of Software Engineering, ESEC/FSE 2021
    Country/TerritoryGreece
    CityVirtual, Online
    Period23/08/2128/08/21

    Keywords

    • software refactoring
    • software testing

    Fingerprint

    Dive into the research topics of 'An automatic refactoring framework for replacing test-production inheritance by mocking mechanism'. Together they form a unique fingerprint.

    Cite this