by Philippe Fremy
LuaUnit is a popular unit-testing framework for Lua, with an interface typical of xUnit libraries (Python unittest, Junit, NUnit, ...). It supports several output formats (Text, TAP, JUnit, ...) to be used directly or work with Continuous Integration platforms (Jenkins, Hudson, ...).
LuaUnit may be installed as a rock or directly added to your project. For simplicity, LuaUnit is contained into a single-file and has no external dependency.
Tutorial and reference documentation is available on read-the-docs
LuaUnit may also be used as an assertion library, to validate assertions inside a running program. In addition, it provides a pretty stringifier which converts any type into a nicely formatted string (including complex nested or recursive tables).
LuaUnit provides a wide range of assertions and goes into great efforts to provide the most useful output. For example since version 3.3 , comparing lists will provide a detailed difference analysis:
-- lua test code. Can you spot the difference ? function TestListCompare:test1() local A = { 121221, 122211, 121221, 122211, 121221, 122212, 121212, 122112, 122121, 121212, 122121 } local B = { 121221, 122211, 121221, 122211, 121221, 122212, 121212, 122112, 121221, 121212, 122121 } lu.assertEquals( A, B ) end
$ lua test_some_lists_comparison.lua TestListCompare.test1 ... FAIL test/some_lists_comparisons.lua:22: expected: List difference analysis: * lists A (actual) and B (expected) have the same size * lists A and B start differing at index 9 * lists A and B are equal again from index 10 * Common parts: = A[1], B[1]: 121221 = A[2], B[2]: 122211 = A[3], B[3]: 121221 = A[4], B[4]: 122211 = A[5], B[5]: 121221 = A[6], B[6]: 122212 = A[7], B[7]: 121212 = A[8], B[8]: 122112 * Differing parts: - A[9]: 122121 + B[9]: 121221 * Common parts at the end of the lists = A[10], B[10]: 121212 = A[11], B[11]: 122121
The command-line options provide a flexible interface to select tests by name or patterns, control output format, set verbosity and more. See the documentation .
LuaUnit also provides some dedicated support to scientific computing. See the documentation .
LuaUnit is very well tested: code coverage is 99.5% . The test suite is run on every version of Lua (Lua 5.1 to 5.4, LuaJIT 2.0 and 2.1 beta) and on many OS (Windows Seven, Windows Server 2012, MacOs X and Ubuntu). You can check the continuous build results on Travis-CI and AppVeyor.
LuaUnit is maintained on GitHub: https://github.com/bluebird75/luaunit . We gladly accept feature requests and even better Pull Requests. For more information on LuaUnit development, please check: Developing LuaUnit .
LuaUnit is released under the BSD license.
The main developer can be reached at phil.fremy at free.fr . If you have security issue to report requiring confidentiality, this is the address to use.
Version 3.2 of LuaUnit has been downloaded more than 235 000 times on LuaRocks
LuaUnit is used in some very nice technological products. I like to mention:
SchedMD/Slurm: Slurm is an open-source cluster resource management and job scheduling system that strives to be simple, scalable, portable, fault-tolerant, and interconnect agnostic. On the June 2017 Top 500 computer list, Slurm was performing workload management on six of the ten most powerful computers in the world including the number 1 system, Sunway TaihuLight with 10,649,600 computing cores. LuaUnit is used by Slurm to validate plugins written in Lua. Thanks Douglas Jacobsen to contribute back to LuaUnit. See the GitHub repository of Slurm .
MAD by the CERN: CERN is the European Organization for Nuclear Research, where physicists and engineers are probing the fundamental structure of the universe. MAD is one of the CERN project: MAD aims to be at the forefront of computational physics in the field of particle accelerator design and simulation. Its scripting language is de facto the standard to describe particle accelerators, simulate beam dynamics and optimize beam optics at CERN. Lua is the main language of MAD-ng, the new generatino of MAD. A fork of LuaUnit is used extensively for all MAD calculation and framework validation. Thanks Laurent Deniau for contributing back to LuaUnit. See the GitHub repository of MAD .
LuaRocks
LuaUnit is available on LuaRocks. To install it, you need at least LuaRocks version 2.4.4 (due to old versions of wget being incompatible with GitHub https downloading)
GitHub
The simplest way to install LuaUnit is to fetch the GitHub version:
git clone git@github.com:bluebird75/luaunit.git
Then copy the file luaunit.lua into your project or the Lua libs directory.
The version of the main branch on GitHub is always stable and can be used safely.
assertAlmostEquals() works also on tables and nested structuresLUAUNIT_OUTPUTsetOutputType() accepts the xml filename as second argument when using the format junitskip() and skipIf()assertErrorMsgContentEquals() to validate exactly any error messageSTRIP_EXTRA_ENTRIES_IN_STACK_TRACEassertTableContains() and assertNotTableContains() to verify the presence of a given value within a tableTABLE_EQUALS_KEYBYCONTENT, it did not make senseassertIs()/assertNotIs() deals better with protected metatablesassertEquals() deals better with tables containing cycles of different structureImportant note when upgrading to version 3.1 : assertions functions are no longer exported directly to the global namespace. See documentation for upgrade paths.
Since some people have forked LuaUnit and release some 2.x version, I am jumping the version number to 3.
Unofficial fork from version 1.3 by rjbcomupting

一站式AI短剧创作平台
Pixmax专注打造下一代“ AI 视觉创作引擎”,整合行业顶尖 AI 大模型、工工业级精准控制及企业级协同管理功能,是全方位的 AI 内容创作平台。


字节跳动旗下 AI 智能助手
字节跳动旗下 AI 智能助手


GPT充值
支持 ChatGPT Plus / Pro 充值服务,支付便捷,自动发货,售后可查。


AI 图片生成平台
GPT Image 2 是面向用户的 AI 图片生成平台,支持文生图、图生图及多模型创意工作流。


你的AI Agent团队
Vecbase 是专为 AI 团队打造的智能工作空间,将数据管理、模型协作与知识沉淀整合于一处。算法、产品与业务在同一平台无缝协同,让从数据到 AI 应用的落地更快一步。


全球首个AI音乐社区
音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。


阿里Qoder团队推出的桌面端AI智能体
QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。


一站式搞定所有学习需求
不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。


为AI短剧协作而生
专为AI短剧协作而生的AniShort正式发布 ,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。


能听懂你表达的视频模型
Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号