Mocking is an essential unit testing technique for isolating the class under
test (CUT) from its dependencies. Developers often leverage mocking frameworks
to develop stub code that specifies the behaviors of mock objects. However,
developing and maintaining stub code is labor-intensive and error-prone. In
this paper, we present StubCoder to automatically generate and repair stub code
for regression testing. StubCoder implements a novel evolutionary algorithm
that synthesizes test-passing stub code guided by the runtime behavior of test
cases. We evaluated our proposed approach on 59 test cases from 13 open-source
projects. Our evaluation results show that StubCoder can effectively generate
stub code for incomplete test cases without stub code and repair obsolete test
cases with broken stub code.Comment: This paper was accepted by the ACM Transactions on Software
Engineering and Methodology (TOSEM) in July 202