Unit Test Generation During Software Development: EvoSuite Plugins for Maven, IntelliJ and Jenkins

A. Arcuri, J. Campos, G. Fraser
International Conference on Software Testing, Verification and Validation (ICST), 2016

Abstract

Different techniques to automatically generate unit tests for object oriented classes have been proposed, but how to integrate these tools into the daily activities of software development is a little investigated question. In this paper, we report on our experience in supporting industrial partners in introducing the EvoSuite automated JUnit test generation tool in their software development processes. The first step consisted of providing a plugin to the Apache Maven build infrastructure. The move from a research-oriented point-and-click tool to an automated step of the build process has implications on how developers interact with the tool and generated tests, and therefore, we produced a plugin for the popular IntelliJ Integrated Development Environment (IDE). As build automation is a core component of Continuous Integration (CI), we provide a further plugin to the Jenkins CI system, which allows developers to monitor the results of EvoSuite and integrate generated tests in their source tree. In this paper, we discuss the resulting architecture of the plugins, and the challenges arising when building such plugins. Although the plugins described are targeted for the EvoSuite tool, they can be adapted and their architecture can be reused for other test generation tools as well.

Bibtex

@inproceedings{Arcuri:2016,
  author = {Arcuri, Andrea, and Campos, Jos{\'e} and Fraser, Gordon},
  title = {Unit Test Generation During Software Development: EvoSuite Plugins for Maven, IntelliJ and Jenkins},
  booktitle = {Proceedings of the 2016 IEEE Ninth International Conference on Software Testing, Verification and Validation},
  series = {ICST '16},
  year = {2016},
  isbn = {},
  pages = {},
  numpages = {8},
  url = {},
  doi = {},
  acmid = {},
  publisher = {IEEE Computer Society},
  address = {Washington, DC, USA},
}