开源单元测试工具/框架汇总
作为开源软件的爱好者,了解了单元测试这概念后,自然忍不住去找找有什么开源单元测试工具。
下面列出了30款1,不分先后顺序。
1. NoSQL的单元测试工具 NoSQLUnit
授权协议:Apache
开发语言:Java
操作系统:跨平台
NoSQLUnit 详细介绍
NoSQLUnit 是一个 JUnit 的扩展,用来为那些使用了 NoSQL 后端的应用提供单元测试和集成测试的工具。
使用示例:
@UsingDataSet(locations="my_data_set.json", loadStrategy=LoadStrategyEnum.REFRESH)
@ShouldMatchDataSet(location="my_expected_data_set.json")
lordofthejars / nosql-unit
2. JavaScript单元测试工具 JsTestDriver
授权协议:Apache
开发语言:JavaScript
操作系统:跨平台
sTestDriver 详细介绍
JsTestDriver是一个JavaScript单元测试工具,易于与持续构建系统相集成并能够在多个浏览器上运行测试轻松实现TDD风格的开发。当在项目中配置好js-test-driver以后,如同junit测试java文件一般,js-test-driver可以直接通过直接运行js文件,来对js文件单元测试。
3. C++单元测试工具 QTRunner
授权协议:GPLv3
开发语言:C/C++
操作系统:跨平台
QTRunner 详细介绍
QTRunner 是一个用来运行多个单元测试并在一个GUI图形界面的应用程序中显示测试结果的软件。支持 QTestLib 和 GoogleTest 单元测试的执行,QTRunner 是基于 Qt 库开发的跨平台测试工具。
4. JavaScript 单元测试工具 Venus
授权协议:Apache 2.0
开发语言:JavaScript
操作系统:跨平台
开发厂商:Linkedin
Venus 详细介绍
Venus 是一个 JavaScript (JS)的测试工具,可以简化运行单元测试。当你在 JS 开发一个基于浏览器的项目时,你想创建单元测试并频繁地运行它们。通常,你会用一些库比如 Mocha 或 Jasmine,写一个单元测试,这些库可以让你定义测试用例,并提供 API 来编写判断。
我们通过创建一个工具,可以让你更轻松地与现有的库一起工作。一下是 Venus 的主要好处:
- 在你的测试使用 Simple annotations, 来指定你要使用的测试库,你要测试的文件,其它文件依赖,以及测试工具模板
- 通过使用 PhantomJS 运行命令行,直接快速运行你的基于浏览器的测试
- 在多浏览器的命令行中同时运行你的测试(本地运行或远程)
- 集成持续集成工具(Selenium Grid + Travis CI)
linkedin / venus.js
5.Flex 单元测试工具 Fluint
授权协议:MIT
开发语言:ActionScript
操作系统:跨平台
Fluint 详细介绍
Fluint是一个 Flex 单元测试工具,对于Flex单元和集成测试,“Fluint”非常简洁。它是为编写Flex2或Flex3应用的开发者提供的测试框架,无论这些应用是通过Adobe Flash Player在浏览器中部署的,还是通过Adobe AIR在桌面上部署的。
Fluint最初是作为Digital Primates的内部工具开发的,用以测试一些非常大的项目。随着Flex社区对其需求的不断增长,Digital Primates决定把其发布为一个开源项目。尽管针对Flex有其他的单元测试解决方案,按照Labriala的说法,Fluint仍填补了重要空白。
6. JavaScript 单元测试工具 Buster.JS
授权协议:BSD
开发语言:JavaScript 查看源码»
操作系统:跨平台
Buster.JS 详细介绍
Buster.JS 是 JavaScript 的单元测试工具包,
-
**浏览器测试工具包;**Buster.js 可以自动的在浏览器上测试,像 JsTestDriver ;QUnit 风格 静态 HTML 页面测试 ; 在一些不知名的浏览器上测试,像 PhantomJS 和 jsdom ;
-
Node.js 测试工具包;
-
灵活; Buster.js 里面几乎含有所有的公共 API 。你可自己书写** 测试报告** 来自定义 buster 的输出(buster 里面已经有 xUnit XML, traditional dots, specification, tap, TeamCity ),也可以编写扩展其他测试框架(buster 里面已经有 buster-jstestdriver ),添加你自己的测试语法(xUnit 和 BDD);
-
更多相关信息请看 the overview 。
7. 存储过程单元测试工具 SQLUnit
授权协议:未知
开发语言:Java
操作系统:跨平台
SQLUnit 详细介绍
SQLUnit是一个用于对存储过程进行单元测试的工具,其实也可以用于做针对数据库数据、性能的测试等,延续了xUnit家族的一贯特性和风格,只不过它的测试是以xml的方式来编写,但原则仍然和xUnit家族其他产品一样,强调的是输出和预期的比较,SQLUnit的文档比较的少,由于官方站上并没有提供类似其他开源工具的quick start guide,就写了这篇quick start guide以便大家快速的使用sqlunit,至于SQLUnit的高级用法还是得去多看看sqlunit.sf.net官方站上的文档。
8.C++单元测试工具 ECUT
授权协议:EPL
开发语言:C/C++
操作系统:跨平台
ECUT 详细介绍
ECUT (Eclipse C++ Unit Testing) 项目将 CppUnit 和 Eclipse CDT 开发工具集成起来,提供更好的无缝的单元测试支持,类似 JUnit 和 JDT 一样。该项目也允许跟其他的 C++单元测试框架进行集成。
9.Qt单元测试工具 QTestlib
授权协议:未知
开发语言:C/C++
操作系统:跨平台
QTestlib 详细介绍
Trolltech公司提供的QTestlib框架,是一种针对基于QT编写的程序或库的单元测试工具。QTestLib提供了单元测试框架的基本功能,并提供了针对GUI测试的扩展功能。设计QTestLib的目标是为了简化QT程序或库的单元测试工作。
特性 | 详细描述 |
---|---|
轻量级 | QTestlib 只包含 6000行代码和 60个导出符号。 |
自包含 | 对于非GUI测 试,QTestlib只需要Qt核心库的几 个符号。 |
快速测试 | QTestlib不需要特殊的测试执行程序,不需要为测试而进行特殊的注册。 |
数据驱动测试 | 一个测试程序可以在不同的测试数据集上执行多次。 |
基本的GUI测 试 | QTestlib提供了模拟鼠标和键盘事件的功能。 |
IDE友好 | QTestlib的输出信息可以被Visual Studio和KDevelop解析。 |
线程安全 | 错误报告是线程安全的、原子性的。 |
类型安全 | 对模板进行了扩展使用,防止由隐式类型转换引起的错误。 |
易扩展 | 用户自定义类型可以容易地加入到测试数据和测试输出中。 |
10.单元测试维护工具 Unitils
授权协议:Apache
开发语言:Java
操作系统:跨平台
Unitils 详细介绍
Unitils这个Java开源类包的目的是让单元测试变得更加容易和可维护。Unitils构建在DBUnit与EasyMock项目之上并与 JUnit和TestNG相结合。支持数据库测试,支持利用mock对象进行测试并提供与Spring和Hibernate相集成。Unitils设计成 以一种高度可配置和松散偶合的方式来添加这些服务到单元测试中。
在进行数据库测试时能够:
自动维护和强制关闭单元测试数据库(支持Oracle,Hsqldb,MySql,DB2),
简化单元测试数据库连接的设置,
简化利用DBUnit测试数据的插入,
简化Hibernate session管理,
自动测试与数据库相映射的Hibernate映射对象。
在利用Mock对象进行测试时能够:
简化EasyMock mock对象创建,
简化mock对象注入,利用反射等式匹配EasyMock参数。
在与Spring集成时易于把spring管理的bean注入到单元测试中,支持在单元测试中使用一个用Spring配置的Hibernate SessionFactory。
11. Java单元测试框架 JUnit
授权协议:CPL
开发语言:Java
操作系统:跨平台
JUnit 详细介绍
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中为最成功的一个。 JUnit有它自己的JUnit扩展生态圈。
多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
在线Javadoc:http://www.ostools.net/apidocs/apidoc?api=junit-4.10
12.C单元测试工具 greatest
授权协议:未知
开发语言:C/C++
操作系统:跨平台
greatest 详细介绍
greatest 是一个 C 语言的单元测试系统,只需要一个文件支持。示例代码:
$ cat simple.c
#include "greatest.h"
TEST x_should_equal_1() {
int x = 1;
ASSERT_EQ(1, x); /* default message */
ASSERT_EQm("yikes, x doesn't equal 1", 1, x); /* custom message */
PASS();
}
SUITE(the_suite) {
RUN_TEST(x_should_equal_1);
}
/* Add definitions that need to be in the test runner's main file. */
GREATEST_MAIN_DEFS();
int main(int argc, char **argv) {
GREATEST_MAIN_BEGIN(); /* command-line arguments, initialization. */
RUN_SUITE(the_suite);
GREATEST_MAIN_END(); /* display results */
}
$ make simple && ./simple
cc -g -Wall -Werror -pedantic simple.c -o simple
* Suite the_suite:
.
1 tests - 1 pass, 0 fail, 0 skipped (5 ticks, 0.000 sec)
Total: 1 tests (47 ticks, 0.000 sec)
Pass: 1, fail: 0, skip: 0.
silentbicycle / greatest
13.单元测试检测工具 PIT
授权协议:Apache
开发语言:Java
操作系统:跨平台
PIT 详细介绍
PIT 是一个快速的 Java 系统突变检测系统,可用来测试单元测试的有效性,测试单元测试的覆盖。
14.数据库单元测试工具 DbUnit
授权协议:未知
开发语言:Java
操作系统:跨平台
DbUnit 详细介绍
DbUnit 使您可以容易地执行 JDBC 查询并获取它们的值。使用 DbUnit JDBC 包装器而不是纯粹的 JDBC 有几个理由:
- 可以用 SQL 查询创建一个
Dataset
,并使用 DbUnit 的 assertion(断言)方法(在后面描述)。 - 可以用 SQL 查询创建一个
Dataset
,并将它保存为一个FlatXmlDataSet
。可以在以后将它重新装载到数据库中。 - 可以容易地从任何行中获取列的内容,无需进行迭代。
15.Java GUI单元测试工具 Abbot
授权协议:未知
开发语言:Java
操作系统:跨平台
Abbot 详细介绍
Abbot 是一个简单的用来对 Java 的图形界面应用程序进行功能和单元测试的框架。主要功能包括模拟用户行为、检查组件状态,测试过程会被记录下来并可以进行回放。
16.C++单元测试工具 GoogleTest
授权协议:BSD
开发语言:C/C++
操作系统:跨平台
GoogleTest 详细介绍
Google的开源C++单元测试框架Google Test,简称gtest 是一个非常的不错单元测试框架。支持跨平台以及包括 Windows CE 和 Symbian 在内的一些手机操作系统。
17.C++单元测试框架 CppTest
授权协议:LGPL
开发语言:C/C++
操作系统:跨平台
CppTest 详细介绍
CppTest 是 C++ 的单元测试框架。CppUnit 简单得多,但是效果也不错。下面简要地对比这两个强大的工具:
- 创建单元测试和测试套件的简便性。
CppUnit
和CppTest
都创建类方法形式的单元测试,类本身都派生自工具提供的Test
类。但是,CppTest
的语法略微简单些,测试的注册在类构造器内进行。对于CppUnit
,需要额外的宏CPPUNIT_TEST_SUITE
和CPPUNIT_TEST_SUITE_ENDS
。 - 运行测试。
CppTest
直接调用测试套件上的run
方法,而CppUnit
使用单独的TestRunner
类,通过调用这个类的run
方法运行测试。 - **扩展测试层次结构。**对于
CppTest
,随时可以从以前的测试套件派生新类,从而扩展测试套件。新的类定义一些新函数,这些函数成为新的单元测试。只需在新类类型的对象上调用run
方法。与之相反,CppUnit
需要使用CPPUNIT_TEST_SUB_SUITE
宏和类继承来实现相同的效果。 - 生成格式化的输出。
CppTest
和CppUnit
都允许定制输出。但是,CppTest
有预定义的 HTML 输出格式化器,而CppUnit
没有。但是,只有CppUnit
支持 XML 格式化。它们都支持文本和编译器式格式。 - **创建测试装备。**要想使用测试装备,
CppUnit
要求测试类派生自CppUnit::TestFixture
。您必须提供设置和退出例程的定义。对于CppTest
,只需提供设置和退出例程的定义。这个解决方案显然更好,因为这让客户机代码更简单。 - 预定义的宏支持。
CppTest
和CppUnit
都提供一组用于断言、处理浮点等的宏。 - 头文件。
CppTest
只要求包含一个头文件,而CppUnit
客户机代码必须根据使用的特性包含多个头文件,比如 HelperMacros.h 和 TextTestRunner.h。
18. JavaScript/TypeScript 测试框架 MoqJS
授权协议:未知
开发语言:JavaScript
操作系统:跨平台
MoqJS 详细介绍
MoqJS 是基于 .NET Moq 框架的 JavaScript/TypeScript 测试框架。
主要特性:
- 强类型:TypeScript
- 完美的 VS 集成
- 使用 setup/setupPrivate/verify/verifyPrivate 来修改和检测 moles behavior
- 非常低的学习曲线
示例代码:
// Create some object instance
var dog = new Dog();
// Create a mole for the object
var mole = new Mole(dog);
// Setup behavior
mole.setup(_dog => _dog.eat('meat')).returns('Yum yum yum');
// Invoke
var result = dog.eath('meat');
// Verify the given method was indeed called with the expected value exactly once
var isVerified = mole.verify(_dog => _dog.eat('meat'), Times.exact(1));
slavik57 / moqjs
19. Android 自动化测试 Robolectirc
授权协议:MIT
操作系统:Android
Robolectirc 详细介绍
Robolectirc 是一款 Android 程序自动化测试工具。
测试代码:
@RunWith(RobolectricTestRunner.class)
public class MyActivityTest {
@Test
public void clickingButton_shouldChangeResultsViewText() throws Exception {
Activity activity = Robolectric.buildActivity(MyActivity.class).create().get();
Button pressMeButton = (Button) activity.findViewById(R.id.press_me_button);
TextView results = (TextView) activity.findViewById(R.id.results_text_view);
pressMeButton.performClick();
String resultsText = results.getText().toString();
assertThat(resultsText, equalTo("Testing Android Rocks!"));
}
}
robolectric / robolectric
20.Python 模拟测试框架 CaptureMock
授权协议:LGPL
开发语言:Python
操作系统:跨平台
CaptureMock 详细介绍
CaptureMock 提供 Python 模拟的捕获-重放功能,建立在命令行和客户机-服务器通信的基础上。CaptureMock 所谓的方法就是 捕获-重放 方法。它在用户‘记录’模拟子系统的时候观察代码和模拟出来的子系统的交互,并且用它自己的格式记录在文本文件中。
当用户在 ‘重放模式’运行测试时,CaptureMock 会扮演还在酝酿中的子系统,用户甚至可以不用安装真正的子系统。用户每次运行测试的时候都可以选择是在真实子系统的下还是校验或者重建捕获到的模拟子系统,亦或者是之前运行捕获的模拟子系统。如果在‘重放模式’下,CaptureMock 不能接收到之前相同的调用,那么测试将会失败,提示用户是否想在记录模式下重建模拟子系统。
21.C语言单元测试框架 CUnit
授权协议:LGPL
开发语言:C/C++
操作系统:Windows
CUnit 详细介绍
继Junit CppUnit的成功后, c语言环境下也出现了开发源码的白盒测试用例CUnit。CUnit以静态库的形式提供给用户使用,用户编写程序的时候直接链接此静态库就可以了。它提供了一个简单的单元测试框架,并且为常用的数据类型提供了丰富的断言语句支持。
22. Python单元测试框架 PyUnit
授权协议:Python
开发语言:Python
操作系统:跨平台
PyUnit 详细介绍
Python单元测试框架(The Python unit testing framework),简称为PyUnit, 是Kent Beck和Erich Gamma这两位聪明的家伙所设计的 JUnit 的Python版本。 而JUnit又是Kent设计的Smalltalk测试框架的Java版本。它们都是各自语言的标准测试框架。
23.C/C++单元测试框架 CppUTest
授权协议:BSD
开发语言:C/C++
操作系统:跨平台
CppUTest 详细介绍
CppUTest 是一个功能全面的测试框架。
CppUTest是为了支持在多种操作系统上开发嵌入式软件而特别设计的。CppUTest的宏被设计成不需要了解C++也可以写测试用例。这使得C程序员更容易用这个测试框架。
CppUTest只使用C++语言中主要的那部分子集,这种选择很好地适应了那些编译器不能完全支持全部C++语言特性的嵌入式开发。你会看到用Unity和CppUTest写出的单元测试几乎一模一样。你当然可以选择任意一个测试框架来进行你的产品开发。
24.C++单元测试框架 CppUnit
授权协议:未知
开发语言:C/C++
操作系统:跨平台
CppUnit 详细介绍
CppUnit 是个基于 LGPL 的开源项目,最初版本移植自 JUnit,是一个非常优秀的开源测试框架。CppUnit 和 JUnit 一样主要思想来源于极限编程(XProgramming)。主要功能就是对单元测试进行管理,并可进行自动化测试。
测试驱动开发(TDD)是以测试作为开发过程的中心,它坚持,在编写实际代码之前,先写好基于产品代码的测试代码。开发过程的目标就是首先使测试能够通 过,然后再优化设计结构。测试驱动开发式是极限编程的重要组成部分。XUnit,一个基于测试驱动开发的测试框架,它为我们在开发过程中使用测试驱动开发 提供了一个方便的工具,使我们得以快速的进行单元测试。XUnit的成员有很多,如JUnit,PythonUnit等。CppUnit 即是XUnit家族中的一员,它是一个专门面向C++的测试框架。
25.Ada语言的单元测试 AUnit
授权协议:未知
操作系统:跨平台
AUnit 详细介绍
AUnit 是 Ada 编程语言的单元测试工具,类似于 JUnit。
26.C单元测试框架 zCUT
授权协议:GPL
开发语言:C/C++
操作系统:跨平台
软件作者:zbaitu
zCUT 详细介绍
C单元测试框架。
特点:
- C语言实现。clang编译。std=gnu89。
- 使用宏简单地注册case, suite,丰富的断言,风格类似google test。
- 良好的结果输出。
zBaitu / zCUT
27. EJB测试工具 Ejb3Unit
授权协议:未知
开发语言:Java
操作系统:跨平台
Ejb3Unit 详细介绍
Ejb3Unit 是一个无需EJB 容器的 EJB 3.0 的单元测试框架,扩展于 JUnit ,为所有的 EJB 项目提供自动化测试的工具
28. PerlUnit
授权协议:未知
开发语言:Perl
操作系统:未知
PerlUnit 详细介绍
JUnit的Perl版
29.PythonUnit
授权协议:未知
开发语言:Python
操作系统:未知
PythonUnit 详细介绍
JUnit的Python版
30.C++ 单元测试框架 cipra
授权协议:BSD
开发语言:C/C++
操作系统:跨平台
cipra 详细介绍
cipra 是一个简单的、兼容 TAP (Test Anything Protocol) 的 C++ 单元测试框架。100% 使用标准的 C++11 编写,只提供一组头文件,可很方便的在你的 C++11 项目中使用。
广西大学大礼堂-百度图片
%E5%AD%A6%E9%A3%8E%E6%99%AF&step_word=&hs=2&pn=48&spn=0&di=56805949860&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=2550670342%2C1442798112&os=1678717745%2C600101669&simid=4281892557%2C479695258&adpicid=0&lpn=0&ln=1719&fr=&fmq=1496829864919_R&fm=&ic=undefined&s=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fschool.edu63.com%2Fuploadfile%2F20074309425359862.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Ffvi55s_z%26e3Bj17mn_z%26e3Bv54AzdH3Fip4sAzdH3F90AzdH3Ffvi55sSi5o90_9_z%26e3Bip4s&gsm=0&rpstart=0&rpnum=0)*