开源单元测试工具汇总

开源单元测试工具/框架汇总

作为开源软件的爱好者,了解了单元测试这概念后,自然忍不住去找找有什么开源单元测试工具。

下面列出了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文件单元测试。

img

3. C++单元测试工具 QTRunner

单元测试工具

授权协议:GPLv3

开发语言:C/C++

操作系统:跨平台

QTRunner 详细介绍

QTRunner 是一个用来运行多个单元测试并在一个GUI图形界面的应用程序中显示测试结果的软件。支持 QTestLibGoogleTest 单元测试的执行,QTRunner 是基于 Qt 库开发的跨平台测试工具。

img

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

Eclipse插件 测试工具 单元测试工具

授权协议:EPL

开发语言:C/C++

操作系统:跨平台

ECUT 详细介绍

ECUT (Eclipse C++ Unit Testing) 项目将 CppUnitEclipse CDT 开发工具集成起来,提供更好的无缝的单元测试支持,类似 JUnit 和 JDT 一样。该项目也允许跟其他的 C++单元测试框架进行集成。

img

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作为单元测试的工具。

img

在线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 系统突变检测系统,可用来测试单元测试的有效性,测试单元测试的覆盖。

img

14.数据库单元测试工具 DbUnit

单元测试工具

授权协议:未知

开发语言:Java

操作系统:跨平台

DbUnit 详细介绍

img

DbUnit 使您可以容易地执行 JDBC 查询并获取它们的值。使用 DbUnit JDBC 包装器而不是纯粹的 JDBC 有几个理由:

  • 可以用 SQL 查询创建一个 Dataset ,并使用 DbUnit 的 assertion(断言)方法(在后面描述)。
  • 可以用 SQL 查询创建一个 Dataset ,并将它保存为一个 FlatXmlDataSet 。可以在以后将它重新装载到数据库中。
  • 可以容易地从任何行中获取列的内容,无需进行迭代。

15.Java GUI单元测试工具 Abbot

GUI 测试工具 单元测试工具

授权协议:未知

开发语言: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 简单得多,但是效果也不错。下面简要地对比这两个强大的工具:

  • 创建单元测试和测试套件的简便性。CppUnitCppTest 都创建类方法形式的单元测试,类本身都派生自工具提供的 Test类。但是,CppTest 的语法略微简单些,测试的注册在类构造器内进行。对于 CppUnit,需要额外的宏 CPPUNIT_TEST_SUITECPPUNIT_TEST_SUITE_ENDS
  • 运行测试。CppTest 直接调用测试套件上的 run 方法,而 CppUnit 使用单独的 TestRunner 类,通过调用这个类的 run 方法运行测试。
  • **扩展测试层次结构。**对于 CppTest,随时可以从以前的测试套件派生新类,从而扩展测试套件。新的类定义一些新函数,这些函数成为新的单元测试。只需在新类类型的对象上调用 run 方法。与之相反,CppUnit 需要使用 CPPUNIT_TEST_SUB_SUITE宏和类继承来实现相同的效果。
  • 生成格式化的输出。CppTestCppUnit 都允许定制输出。但是,CppTest 有预定义的 HTML 输出格式化器,而 CppUnit 没有。但是,只有 CppUnit 支持 XML 格式化。它们都支持文本和编译器式格式。
  • **创建测试装备。**要想使用测试装备,CppUnit 要求测试类派生自 CppUnit::TestFixture。您必须提供设置和退出例程的定义。对于 CppTest,只需提供设置和退出例程的定义。这个解决方案显然更好,因为这让客户机代码更简单。
  • 预定义的宏支持。CppTestCppUnit 都提供一组用于断言、处理浮点等的宏。
  • 头文件。 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

开发语言:Java 查看源码»

操作系统: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以静态库的形式提供给用户使用,用户编写程序的时候直接链接此静态库就可以了。它提供了一个简单的单元测试框架,并且为常用的数据类型提供了丰富的断言语句支持。

img

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单元测试框架。

特点:

  1. C语言实现。clang编译。std=gnu89。
  2. 使用宏简单地注册case, suite,丰富的断言,风格类似google test。
  3. 良好的结果输出。

zBaitu / zCUT

27. EJB测试工具 Ejb3Unit

单元测试工具

授权协议:未知

开发语言:Java

操作系统:跨平台

Ejb3Unit 详细介绍

Ejb3Unit 是一个无需EJB 容器的 EJB 3.0 的单元测试框架,扩展于 JUnit ,为所有的 EJB 项目提供自动化测试的工具

img

img

28. PerlUnit

单元测试工具

授权协议:未知

开发语言:Perl

操作系统:未知

PerlUnit 详细介绍

JUnit的Perl版

29.PythonUnit

单元测试工具

授权协议:未知

开发语言:Python

操作系统:未知

PythonUnit 详细介绍

JUnit的Python版

img

30.C++ 单元测试框架 cipra

单元测试工具

授权协议:BSD

开发语言:C/C++

操作系统:跨平台

cipra 详细介绍

cipra 是一个简单的、兼容 TAP (Test Anything Protocol) 的 C++ 单元测试框架。100% 使用标准的 C++11 编写,只提供一组头文件,可很方便的在你的 C++11 项目中使用。

img

广西大学大礼堂-百度图片

%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)*


  1. 开源中国社区-单元测试工具 ↩︎

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Galaxy_Robot

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值