ERT: Emacs Lisp Regression Testing

ERT is a tool for automated testing in Emacs Lisp. Its main features are facilities for defining tests, running them and reporting the results, and for debugging test failures interactively.

ERT is similar to tools for other environments such as JUnit, but has unique features that take advantage of the dynamic and interactive nature of Emacs. Despite its name, it works well both for test-driven development (see and for traditional software development methods.

Introduction A simple example of an ERT test.
How to Run Tests Run tests in Emacs or from the command line.
How to Write Tests How to add tests to your Emacs Lisp code.
How to Debug Tests What to do if a test fails.
Extending ERT ERT is extensible in several ways.
Other Testing Concepts Features not in ERT.
Index Concept, Function and Variable Index
GNU Free Documentation License The license for this documentation.

Detailed Node Listing

How to Run Tests
Running Tests Interactively Run tests in your current Emacs.
Running Tests in Batch Mode Run tests in emacs -Q.
Test Selectors Choose which tests to run.
How to Write Tests
The should Macro A powerful way to express assertions.
Expected Failures Tests for known bugs.
Tests and Their Environment Don't depend on customizations; no side effects.
Useful Techniques Some examples.
How to Debug Tests
Understanding Explanations How ERT gives details on why an assertion failed.
Interactive Debugging Tools available in the ERT results buffer.
Extending ERT
Defining Explanation Functions Teach ERT about more predicates.
Low-Level Functions for Working with Tests Use ERT's data for your purposes.
Other Testing Concepts
Mocks and Stubs Stubbing out code that is irrelevant to the test.
Fixtures and Test Suites How ERT differs from tools for other languages.
Index Concept, Function and Variable Index
GNU Free Documentation License The license for this documentation.

Copyright © 2008, 2010–2019 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover Texts being “A GNU Manual,” and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled “GNU Free Documentation License”.

(a) The FSF's Back-Cover Text is: “You have the freedom to copy and modify this GNU manual.”