lunit - Unit Testing Framework for Lua


Lunit is a unit testing framework for lua, written in lua. It provides currently 27 assert functions, 8 type checking functions and a few miscellaneous functions for usage as an easy unit testing framework.

To run lunit you need Lua 5.1 or newer. To find out more about Lua, please take a look at The Programming Language Lua.

To find out more about unit testing, look at Unit Test - Wikipedia, the free encyclopedia.


5. November 2009: Lunit Version 0.5 released.

This release adds the function assert_match_error() and should be more compatible with Darwin and Mac OS X. A few bugs were fixed.

Lunit is quite stable in the meantime.

5. January 2008: Lunit Version 0.4 released.

This is mostly a complete rewrite. It supports Lua-5.1 only, and uses the Lua module system. Included is a shell script that should make using lunit easy. Support for different test runner plugins has been added. The included default test runner is a console test runner.

The package is still not complete but was used internally for the last 2 years with great success.

22. August 2004: Lunit Version 0.3 (alpha) released.

New function lunit.wrap() to wrap a single function into a complete testcase added. Additionally, on test failures the stacktrace will shown.

18. August 2004: Lunit Version 0.2 (alpha) released.

This is the second release of lunit to the public. It fixes an ugly bug and adds a bunch of new tests to its own test suite. Everybody who downloaded the 0.1 alpha release, should upgrade as soon as possible. Additionally, all assert functions return the actual value on success like the build-in lua assert().

15. August 2004: Lunit Version 0.1 (alpha) released.

This is the first release of lunit for public review. It contains full documentation and a few examples.


The example file "my_testcase.lua" with the following content:

require "lunit"

module( "my_testcase", lunit.testcase )

function test_success()
  assert_false( false, "This test never fails.")

function test_failure()
  fail( "This test always fails!" )

Run with the shell script "lunit" produces the following output:

# ./lunit my_testcase.lua
Loaded testsuite with 2 tests in 1 testcases.


2 Assertions checked.

  1) Failure (my_testcase.test_failure):
my_testcase.lua:10: failure
my_testcase.lua:10: This test always fails!

Testsuite finished (1 passed, 1 failed, 0 errors).


Brief documentation is available: documentation-0.4.txt


Lunit is available as a gziped tar archive. Examples and documentation as well as a complete self testsuite are included.

The archives are signed using GPG with my key

Old releases:

GIT Repository

Lunit source code is hosted at GitHub (

    git clone


Lunit is licensed under the terms of the MIT license.


Please feel free to send questions, suggestions, feature requests and bug reports to Michael Roth <>.