【单元测试工具/框架】

Venus JavaScript单元测试工具

授权协议:Apache-2.0

开发语言:JavaScript 查看源码 »

操作系统:跨平台

软件类型:开源软件

开源组织:LinkedIn

软件简介

Venus 是一个 JavaScript (JS) 的测试工具,可以简化运行单元测试。当你在 JS 开发一个基于浏览器的项目时,你想创建单元测试并频繁地运行它们。通常,你会用一些库比如 Mocha 或 Jasmine,写一个单元测试,这些库可以让你定义测试用例,并提供 API 来编写判断。

我们通过创建一个工具,可以让你更轻松地与现有的库一起工作。一下是 Venus 的主要好处:

  • 在你的测试使用 Simple annotations, 来指定你要使用的测试库,你要测试的文件,其它文件依赖,以及测试工具模板

  • 通过使用 PhantomJS 运行命令行,直接快速运行你的基于浏览器的测试

  • 在多浏览器的命令行中同时运行你的测试(本地运行或远程)

  • 集成持续集成工具(Selenium Grid + Travis CI)

依赖:

Fluint Flex 单元测试工具

授权协议:MIT

开发语言:ActionScript

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

Fluint 是一个 Flex 单元测试工具,对于 Flex 单元和集成测试,“Fluint” 非常简洁。它是为编写 Flex2 或 Flex3 应用的开发者提供的测试框架,无论这些应用是通过 Adobe Flash Player 在浏览器中部署的,还是通过 Adobe AIR 在桌面上部署的。

Fluint 最初是作为 Digital Primates 的内部工具开发的,用以测试一些非常大的项目。随着 Flex 社区对其需求的不断增长,Digital Primates 决定把其发布为一个开源项目。尽管针对 Flex 有其他的单元测试解决方案,按照 Labriala 的说法,Fluint 仍填补了重要空白。

csUnit .NET 单元测试工具

授权协议:Zlib License

开发语言:.NET 查看源码 »

操作系统:Windows

软件类型:开源软件

开源组织:无

软件简介

csUnit 是 C# 版 JUnit,一款 .NET 单元测试工具。

主要特性

  • 标准单元测试功能
  • 易于使用的图形用户界面
  • 支持将多个测试程序集组合到一个测试套件
  • ……

TestableMock Java 单元测试增强工具

授权协议:MIT

开发语言:Java 查看源码 »

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

阿里巴巴研发效能团队开源的 Java 单元测试增强工具,换种思路写 Mock,让单元测试更简单。

无需初始化,不挑测试框架,甭管要换的方法是被测类的私有方法、静态方法还是其他任何类的成员方法,也甭管要换的对象是怎么创建的。写好 Mock 方法,加个 @MockMethod 注解,一切统统搞定。

目录结构

|-- testable-parent       ➜ 提供各子模块的公共父pom文件
|-- testable-all          ➜ 依赖聚合,便于一次性引用所有子模块功能
|-- testable-processor    ➜ 编译期代码预处理模块,提供测试辅助功能
|-- testable-agent        ➜ JavaAgent模块,提供Mock测试相关功能
|-- testable-core         ➜ 基础功能模块,提供Mock相关注解和工具类
|-- testable-maven-plugin ➜ Maven插件模块,用于简化JavaAgent注入
|-- demo
|   |-- java-demo         ➜ Java语言的示例代码
|   `-- kotlin-demo       ➜ Kotlin语言的示例代码
`-- docs                  ➜ 项目使用文档

构建项目

主项目使用 JDK 1.6 + 和 Maven 3 + 版本构建,其中 demo 子项目需要 JDK 1.8 + 版本。

mvn clean install

本地生成文档

docsify serve docs

TestableMock 文档使用 docsify 工具生成,构建前请安装 nodejs 运行时,并使用 npm install -g docsify 命令安装文档生成工具。

QTestlib Qt 单元测试工具

授权协议:未知

开发语言:C/C++

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

Trolltech 公司提供的 QTestlib 框架,是一种针对基于 QT 编写的程序或库的单元测试工具。QTestLib 提供了单元测试框架的基本功能,并提供了针对 GUI 测试的扩展功能。设计 QTestLib 的目标是为了简化 QT 程序或库的单元测试工作。

特性详细描述
轻量级QTestlib 只包含 6000 行代码和 60 个导出符号。
自包含对于非 GUI 测 试,QTestlib 只需要 Qt 核心库的几 个符号。
快速测试QTestlib 不需要特殊的测试执行程序,不需要为测试而进行特殊的注册。
数据驱动测试一个测试程序可以在不同的测试数据集上执行多次。

基本的 GUI 测 试

QTestlib 提供了模拟鼠标和键盘事件的功能。

IDE 友好

QTestlib 的输出信息可以被 Visual Studio 和 KDevelop 解析。

线程安全   

错误报告是线程安全的、原子性的。

类型安全

对模板进行了扩展使用,防止由隐式类型转换引起的错误。

易扩展

用户自定义类型可以容易地加入到测试数据和测试输出中。

 JsTestDriver JavaScript 单元测试工具

授权协议:Apache

开发语言:JavaScript

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

JsTestDriver 是一个 JavaScript 单元测试工具,易于与持续构建系统相集成并能够在多个浏览器上运行测试轻松实现 TDD 风格的开发。当在项目中配置好 js-test-driver 以后,如同 junit 测试 java 文件一般,js-test-driver 可以直接通过直接运行 js 文件,来对 js 文件单元测试。

QTRunner C++ 单元测试工具

授权协议:GPLv3

开发语言:C/C++

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

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

 ECUT C++ 单元测试工具

授权协议:EPL

开发语言:C/C++

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

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

Unitils 单元测试维护工具

授权协议:Apache

开发语言:Java

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

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。

SQLUnit 存储过程单元测试工具

授权协议:未知

开发语言:Java

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

SQLUnit 是一个用于对存储过程进行单元测试的工具,其实也可以用于做针对数据库数据、性能的测试等,延续了 xUnit 家族的一贯特性和风格,只不过它的测试是以 xml 的方式来编写,但原则仍然和 xUnit 家族其他产品一样,强调的是输出和预期的比较,SQLUnit 的文档比较的少,由于官方站上并没有提供类似其他开源工具的 quick start guide,就写了这篇 quick start guide 以便大家快速的使用 sqlunit,至于 SQLUnit 的高级用法还是得去多看看 sqlunit.sf.net 官方站上的文档。

Buster.JS JavaScript 单元测试工具

授权协议:BSD

开发语言:JavaScript 查看源码 »

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

Buster.JS 是 JavaScript 的单元测试工具包,

  • Node.js 测试工具包;
  • 灵活; Buster.js 里面几乎含有所有的公共 API 。你可自己书写 测试报告 来自定义 buster 的输出(buster 里面已经有 xUnit XML, traditional dots, specification, tap, TeamCity ),也可以编写扩展其他测试框架(buster 里面已经有 buster-jstestdriver ),添加你自己的测试语法(xUnit 和 BDD);
  • 更多相关信息请看 the overview 。

NoSQLUnit NoSQL 的单元测试工具

授权协议:Apache

开发语言:Java

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

NoSQLUnit 是一个 JUnit 的扩展,用来为那些使用了 NoSQL 后端的应用提供单元测试和集成测试的工具。

使用示例:

@UsingDataSet(locations="my_data_set.json", loadStrategy=LoadStrategyEnum.REFRESH) 
@ShouldMatchDataSet(location="my_expected_data_set.json")

PIT 单元测试检测工具

授权协议:Apache

开发语言:Java

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

PIT 是一个快速的 Java 系统突变检测系统,可用来测试单元测试的有效性,测试单元测试的覆盖。

GoogleTest C++ 单元测试工具

授权协议:BSD

开发语言:C/C++

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

Google 的开源 C++ 单元测试框架 Google Test,简称 gtest 是一个非常的不错单元测试框架。支持跨平台以及包括 Windows CE 和 Symbian 在内的一些手机操作系统。

特性:

  • An xUnit test framework.

  • Test discovery.

  • A rich set of assertions.

  • User-defined assertions.

  • Death tests.

  • Fatal and non-fatal failures.

  • Value-parameterized tests.

  • Type-parameterized tests.

  • Various options for running the tests.

  • XML test report generation.

支持平台:

  • Linux

  • Mac OS X

  • Windows

  • Cygwin

  • MinGW

  • Windows Mobile

  • Symbian

greatest C 单元测试工具

授权协议:ISC

开发语言:C/C++

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

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.

主要特点

  • 小巧,轻便

    除了 ANSI C89 以外,最大的功能不依赖任何内容,并且使用编译时,测试脚手架应该在没有警告的情况下构建 -Wall -Wextra -pedantic。它低于 1,000 LOC(SLOCCount),并且没有动态分配。

  • 许可许可

    最大的是根据 ISC 许可证发布的。您可以自由使用它,甚至可以用于商业目的。

  • 易于设置

    要使用,仅#include "greatest.h" 在您的项目中。样板非常少。大多数功能是可选的。

  • 不自以为是

    当命令行测试运行器有用时,Greatest 可以提供一个,但是它也可以作为其他程序的一部分运行。它不依赖于特定的构建系统或其他工具,而应适应各种测试方法。它积极避免在测试代码上施加体系结构选择。尽管在设计 C 时考虑到 C 语言是最伟大的,但是它试图从 C ++ 中使用。

  • 模块化的

    测试可以单独运行,也可以分组进行。套件可以共享通用设置,并且可以位于不同的编译单元中。

  • 低摩擦

    可以按名称运行特定的测试或套件,以在开发过程中进行集中且快速的迭代。最大的好处是几乎没有启动延迟。

有一些编译时选项,如果使用 C99 或更高版本的语言标准进行编译,则用于参数测试(使用参数运行测试)的语法会稍微好一些。

 一篇博客文章, 提供了更多信息。虽然已有数年的历史,但主要功能仍是准确的。

盗窃案(一个相关项目)增加了基于属性的测试

TestDriven.Net 单元测试助手 

授权协议:免费,非开源

开发语言:.NET

操作系统:Windows

软件类型:免费软件

开源组织:无

软件简介

在软件开发领域,测试驱动开发(Test Driven Development,TDD)技术在逐渐为广大开发者所接受,它是在添加新代码之前让你的测试代码出错的一种开发技术。在开始编写代码之前首先要写你的测试代码,然后再编写代码让你的测试通过,可以想象,如果没有一个好的单元测试工具,这项工作其实是无法完成的。相信很多.NET 开发人员者对于开源的 NUnit 都不陌生,但是它并不能很好的与 Visual Studio.NET IDE 集成起来。

而 TestDriven.NET 是一款优秀的单元测试工具。它以插件的形式集成在 Visual Studio.NET IDE 中的单元测试工具,能够兼容各种 Visual Studio 版本,并且集成了多种单元测试框架诸如 NUnit,MbUnit,以及 Visual Studio Team System 适配器等。

TestDriven.NET 的前身是 NUnitAddIn,由 Jamie Cansdale 大师开发,一开始作者只是想做一个 NUnit 插件集成到 Visual Studio 中,经过多次版本更新,NUnitAddIn 在 2004 年 9 月底更名为 TestDriven.NET,并在当年的 12 月初发布了它的第一个 Release 版本,即 TestDriven.NET 1.0。由于它在开发中的出色表现,让很多开发人员期待它的下一个版本的发布,这一等待却足足等了两年,在今年的 10 月底,终于迎来了姗姗来迟的 TestDriven.NET 2.0 版本。然而这一等待却是值得的,在 2.0 中,给我们带来了太多的惊喜,它集成了.NET Reflector、NConver、NConverExplorer、TypeMock.NET 等,功能更加强大,下面我将一一介绍 TestDriven.NET 2.0 中涌现出的这些亮点。

DotTrace .NET 性能调试工具

授权协议:商业软件

开发语言:.NET

操作系统:Windows

软件类型:商业软件

开源组织:无

软件简介

DotTrace Performance 是.NET 平台下常用的性能调试工具,能够帮助.Net 开发者以最快的方式找到并移除性能上的瓶颈。 

DotCover 则是一个 Visual Studio 插件,简单易用,以帮助 .NET 开发人员确定单元测试中应覆盖的每个单行代码都确确实实地包含其中。它支持在 Visual Studio 2005、2008 或 2010 环境下工作,能够分析 .NET 框架和 Silverlight 应用程序的语句级代码覆盖。同时集成了 ReSharper 的单元测试工具集,突出显示单元测试未覆盖的代码,可以检测出覆盖任何特别代码位置的单元测试,生成基于 XML 的代码覆盖报告。 

Abbot Java GUI 单元测试工具

授权协议:未知

开发语言:Java

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

Abbot 是一个简单的用来对 Java 的图形界面应用程序进行功能和单元测试的框架。主要功能包括模拟用户行为、检查组件状态,测试过程会被记录下来并可以进行回放。

MUnit Haxe 单元测试框架

授权协议:BSD

开发语言:查看源码 »

操作系统:Linux

软件类型:开源软件

开源组织:无

软件简介

MUnit (MassiveUnit) 是一个元数据驱动的单元测试框架,用于跨平台的 Haxe 开发测试。MUnit 包含创建、更新、编译和运行单元测试类的命令行工具。

UnitAuto 零代码机器学习单元测试平台

授权协议:Apache

开发语言:Kotlin Java JavaScript HTML/CSS

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

机器学习自动化单元测试平台。零代码、全方位、自动化测试方法 / 函数的正确性和可用性。

原理

后端不需要写任何单元测试代码(逻辑代码、注解代码等全都不要),
这个工具会自动生成测试参数,并执行方法,拿到返回值进行校验。

前端是类似 APIAuto 的机器学习自动化测试工具(查看、上传、执行、测试 后端项目中的方法等),
后端提供扫描所有方法、执行某个方法两个 API (主要引入 MethodUtil.java 这个类,里面已实现)。

特点

相比 JUnit、JTest 等一堆 Compiling testing 工具:

  1. 其它工具需要每个方法都写一大堆测试代码,需要开发成本、需要解决测试代码的 bug、业务代码更改后需要同步修改测试代码等;UnitAuto 不需要写任何代码,直接读取方法的属性,自动注入参数,拿到返回值和类成员变量,机器学习自动化校验。
  2. UnitAuto 这种 Runtime testing 工具无需 Mock 环境 (Application, Context 等),更不用为 Mock 出来的环境满足不了需求导致测试用例无法通过而头疼。
演讲

UnitAuto-机器学习自动化单元测试平台_哔哩哔哩_bilibili

源码地址

UnitAuto: ☀️ 机器学习零代码单元测试平台,零代码、全方位、自动化 测试 方法/函数 的正确性、可用性和性能,由腾讯工程师开发 (gitee.com)

CppTest C++ 单元测试框架

授权协议:LGPL

开发语言:C/C++

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

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。

Ahven Ada95 的单元测试

授权协议:BSD

开发语言:

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

Ahven 是 Ada 95 编程语言的单元测试工具。

AUnit Ada 语言的单元测试

授权协议:未知

开发语言:

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

AUnit 是 Ada 编程语言的单元测试工具,类似于 JUnit

Fluorida Flash 单元测试

授权协议:Apache

开发语言:ActionScript

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

Fluorida 是 gigix 同学和 dreamhead 同学开发的 Flex/Flash 单元测试 / 功能测试工具,可以让测试人员用简单的 DSL 编写测试用例来实现 Flex/Flash 程序的自动测试功能。

JsUnitTest JavaScript 单元测试

授权协议:未知

开发语言:JavaScript

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

JsUnitTest 是一个 JavaScript 代码的单元测试工具。

NTime .NET 性能单元测试

授权协议:未知

开发语言:C# .NET

操作系统:Windows

软件类型:开源软件

开源组织:无

软件简介

NTime 是一款用来测试 .NET 应用性能的单元测试工具,界面如下图所示:

NUnitAddin VisualStudio 的单元测试插件

授权协议:Apache

开发语言:C#

操作系统:Windows

软件类型:开源软件

开源组织:无

软件简介

NUnitAddin 是 Visual Studio 2005 的一个用来集成 Nunit 单元测试工具的插件。

portletUnit portlet 单元测试框架

授权协议:未知

开发语言:Java

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

portletUnit,一种用于测试 JSR-168 portlet 的 JUnit 测试框架。portletUnit 使用一种模拟容器来进行测试,从而降低了大型门户服务器环境的投资成本。通过 portletUnit 框架,您可以在任何机器上运行单元测试 — 无需门户服务器。

通过 portletUnit 框架,您可以使用 portlet 内与控件有关的动作测试一个 portlet 的 UI。portletUnit 能够让您在代码上执行单元测试,且在不将它们部署到服务器的情况下执行 portlet。portletUnit 构建于 httpUnit 之上,这有助于测试在一个 Web 页面中引用的 UI。测试常常运行于模拟 portlet 容器上,因此您不需要启动门户服务器环境。使用模拟容器可降低测试时间,而不减弱门户服务器功能。portletUnit 框架还带有测试工具类,用于测试一个 portlet 的不同模式。您可以使用该框架测试一个 portlet 的完整生命周期。

CppUnit C++ 单元测试框架

授权协议:LGPL

开发语言:C/C++ 查看源码 »

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

CppUnit 是个基于 LGPL 的开源项目,最初版本移植自 JUnit,是一个非常优秀的开源测试框架。CppUnit 和 JUnit 一样主要思想来源于极限编程(XProgramming)。主要功能就是对单元测试进行管理,并可进行自动化测试。

测试驱动开发 (TDD) 是以测试作为开发过程的中心,它坚持,在编写实际代码之前,先写好基于产品代码的测试代码。开发过程的目标就是首先使测试能够通 过,然后再优化设计结构。测试驱动开发式是极限编程的重要组成部分。XUnit,一个基于测试驱动开发的测试框架,它为我们在开发过程中使用测试驱动开发 提供了一个方便的工具,使我们得以快速的进行单元测试。XUnit 的成员有很多,如 JUnit,PythonUnit 等。CppUnit 即是 XUnit 家族中的一员,它是一个专门面向 C++ 的测试框架。

GroboUtils Java 测试工具

授权协议:MIT

开发语言:Java

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

GroboUtils 使得扩展 Java 测试变得可能。它包括用在 Java 不同方面测试的多个子项目。在 GroboUtils 中最常被到的工具是:多线程测试 (multi-threaded tests), 整体单元测试 (hierarchial unit tests), 代码覆盖工具 (code coverage tool)。

Mojito-cli-test 单元测试

授权协议:BSD

开发语言:JavaScript 查看源码 »

操作系统:跨平台

软件类型:开源软件

开源组织:Yahoo

软件简介

Mojito-cli-test 能够为 mojito-cli 工具提供 “test” 指令,在 Mojito 应用程序上运行的单元测试。 

源码地址

Mojito-cli-test: Mojito-cli-test 能够为 mojito-cli 工具提供“test”指令,在 Mojito 应用程序上运行的单元测试 (gitee.com)

xlsunit 面向数据库应用的单元测试框架

授权协议:BSD

开发语言:Java

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

xlsunit 辅助 junit,用于辅助基于 Spring、SpringBoot 企业信息系统单元测试,这种企业信息系统都会有大量的数据库操作,使用 xlsunit 来初始化测试前的数据库,以及使用 xlsunit 来比较业务调用后的数据库数据,能减少单元测试工作量,增强单元测试可维护性。

xlsunit 用 excel 来模拟数据库表数据,适合那种一次业务操作,多个表数据变化的应用系统。

XLSParser workflowParser = null;
//
@Autowrired WorkflowService workflowService;
//
@MockBean
private ThirdPatyUserService userService;

@Autowired
protected SQLManager sqlManager;

@Before
public void init() {
  super.init();
  //XLSUnit BeetlSql
  DBAccess dbAccess = new BeetlSqlDBAccess(sqlManager);
  // Excel 
  XLSFileLoader loader = new XLSFileLoader("root");
  //
  workflowParser = new XLSParser(loader, "user.xlsx", dbAccess,
                                 new 
RowHolderFacotoy.RowBeetlSQLHolderFactory());
}

public void testUser1() {
  //执行某个测试场景的初始化工作,初始化user表
  VariableTable vars = new VariableTable();
  userParser.init(vars);

  //开始测试,从excel中获取userId和password
  userParser.prepare("场景1", vars);    
  Integer id = (Integer) vars.find("id");
  String newPassword = vars.findString("test.password");
  //调用业务代码,修改用户密码
  userSerivce2.modifyUserInfo(id, newPassword);

  //比较数据库里的数据跟场景1的数据是否一致
  userParser.test("场景1", vars);

}

可以将测试数据写在 excel 里,或者通过数据库客户端工具粘贴到 excel 里完成数据的输入。

可以用拥有任意多个 excel 文件,每个文件概念上都可以包含一个初始化数据的多种测试场景,excel 文件有三部分组成

  • 第一个工作表,这个工作表用来介绍当前 excel 文件所测试的业务,以及包含一个目录,快捷指向每个场景测试

  • 第二个表示 数据库初始化数据,可以包含多个表的初始化数据,也可以在初始化数据定义前,定义一些变量,这些变量可以用在初始化数据,JUnit 代码里,以及随后的场景测试里

  • 第三个表以后的每个工作表都是场景测试表,对应了单元测试完毕后,期望的数据库的样子。通常用红色背景标注在表的列名上,这样表示只让 xlsunit 比较关心的列。同时,也能提醒阅读者,编写期望值

xlsunit 基于 Beetl ,完成 Excel 里计算表达式实现。

代码地址

xlsunit: 面向数据库应用的单元测试框架,使用excel,作为输入,以及输出比较,适合大量数据库操作 (gitee.com)

gjstest 单元测试框架

授权协议:未知

开发语言:C/C++ JavaScript

操作系统:跨平台

软件类型:开源软件

开源组织:Google

软件简介

gjstest(Google JS Test)是在 V8 引擎上快速运行 javascript 单元测试框架的工具,且不需要用户启动完整的浏览器。当然,假如你在 V8 上面测试的时候没有浏览器也没有 DOM 的话,你可以使用本工具来完成测试。

特征如下:

  • 能够极快的启动测试和执行测试,且不需要运行浏览器

  • 输出可读的测试结果,测试失败也可读、明了

  • 一个基于浏览器的测试运行工具能够随 JS 的变化而变化

  • 风格和语义都类似 C++风格

  • 内置模拟框架,所以只需要极少的代码即可完成测试

代码示例:

function UserInfoTest() {
  // Each test function gets its own instance of UserInfoTest, so tests can
  // use instance variables to store state that doesn't affect other tests.
  // There's no need to write a tearDown method, unless you modify global
  // state.
  //
  // Create an instance of the class under test here, giving it a mock
  // function that we also keep a reference to below.
  this.getInfoFromDb_ = createMockFunction();
  this.userInfo_ = new UserInfo(this.getInfoFromDb_);
}
registerTestSuite(UserInfoTest);

addTest(UserInfoTest, function formatsUSPhoneNumber() {
  // Expect a call to the database function with the argument 0xdeadbeef. When
  // the call is received, return the supplied string.
  expectCall(this.getInfoFromDb_)(0xdeadbeef)
    .willOnce(returnWith('phone_number: "650 253 0000"'));

  // Make sure that our class returns correctly formatted output.
  expectEq('(650) 253-0000', this.userInfo_.getPhoneForId(0xdeadbeef));
});

addTest(UserInfoTest, function returnsLastNameFirst() {
  expectCall(this.getInfoFromDb_)(0xdeadbeef)
    .willOnce(returnWith('given_name: "John" family_name: "Doe"'));

  // Make sure that our class puts the last name first.
  expectEq('Doe, John', this.userInfo_.getNameForId(0xdeadbeef));
});

GoReporter 代码质量检测工具

授权协议:Apache

开发语言:Google Go HTML/CSS 查看源码 »

操作系统:跨平台

软件类型:开源软件

开源组织:360

示例

Summary

UnitTest

SimpleCode

DeadCode&CopyCode

代码地址

goreporter: Golang 开发工具,提供代码质量检测/Golang 代码静态检测器/Golang 项目单元测试,根据自定义模版自动生成 Golang 代码质量检测报告 (gitee.com)

tsd TypeScript 类型定义校验工具

授权协议:MIT

开发语言:TypeScript 查看源码 »

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

tsd 是命令式的 TypeScript 类型定义校验工具,适用于对工具类型进行单元测试。

此工具通过创建包含 .test-d.ts 扩展的文件来为类型定义(即.d.ts文件)编写测试。这些.test-d.ts 文件不会被执行,甚至不会以标准方式编译。相反,这些文件将被解析为特殊结构,例如 expectError<Foo>(bar),然后根据类型定义进行静态分析。

用法

declare const concat: {
	(value1: string, value2: string): string;
	(value1: number, value2: number): string;
};

export default concat;
import concat from '.';

concat('foo', 'bar');
concat(1, 2);

代码地址

tsd: tsd 是命令式的 TypeScript 类型定义校验工具,适用于对工具类型进行单元测试 

Ejb3Unit EJB 测试工具

授权协议:未知

开发语言:Java

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

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

Nocilla HTTP 请求测试工具包

授权协议:MIT

开发语言:Objective-C

操作系统:OS X

软件类型:开源软件

开源组织:无

软件简介

Nocilla 是用于 iOS 和 OS X 上测试 HTTP 请求的工具包,特点:

  • 在单元测试中对 HTTP 和 HTTPS 请求进行测试
  • 很棒的领域专用于因,提升可读性可可维护性
  • Tested.
  • Fast.
  • 可扩展来支持更多 HTTP 库
  • 社区支持

Cypress 前端 E2E 测试工具

授权协议:MIT

开发语言:JavaScript

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

Cypress 是为现代网络而构建的下一代前端测试工具,用于解决开发者和 QA 工程师在测试现代应用程序时面临的关键难题。

Cypress 简化了设置测试、编写测试、运行测试和调试测试,支持端到端测试、集成测试和单元测试,支持测试在浏览器中运行的任意内容。支持 Mac OS、Linux 和 Windows 平台。

代码地址

Cypress: Cypress 是为现代网络而构建的下一代前端测试工具,用于解决开发者和 QA 工程师在测试现代应用程序时面临的关键难题 

Atomus JavaScript 测试工具库

授权协议:MIT

开发语言:JavaScript 查看源码 »

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

Atomus 是一个简单的工具库,用来在 Node.js 环境下测试客户端代码。当使用终端模拟浏览器的时候,Atomus 在单元测试和功能性测试中非常有用。这就是 Atomus 名字的来源。Atomus 会和应用程序的单元和谐工作。你只需要包含需要测试框架和模块,然后创建一个实例,然后开始使用 DOM 和模块的 API 即可。

代码地址

Gitee 极速下载/atomus

Coco Ruby 代码覆盖率工具

授权协议:GPLv3

开发语言:Ruby 查看源码 »

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

Coco 是一个 Ruby 的代码覆盖率工具,可通过在 RSpec 或者单元测试里通过简单的 require coco 来使用。支持独立 Ruby 或者 Rails 中使用。它显示了未被覆盖的代码文件名,构建一个简单的 HTML 报告,报告那些不包含测试的源码,使用 YAML 配置文件。

代码地址

coco-ruby: Coco 是一个 Ruby 的代码覆盖率工具,可通过在 RSpec 或者单元测试里通过简单的 require coco 来使用 (gitee.com)

EasyCoverage

授权协议:Apache

开发语言:Java

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

Easy Coverage 是一个可以自动执行单元测试的工具,具有可扩展性和高度可定制性,可作为独立产品运行或者是和 JUnit 一起使用,对其他的单元测试框架的支持(如 TestNG) 正在计划中。

示例代码:

JUnitTestSuiteProvider testSuiteProvider =
    new JUnitTestSuiteProvider("Easy Coverage Quick Start Test Suite");
testSuiteProvider.addClass(ClassUnderTest.class);
testSuiteProvider.addClass(AnotherClassUnderTest.class);

istanbul JavaScript 代码覆盖率工具

授权协议:BSD

开发语言:JavaScript

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

istanbul 是一个 JavaScript 的代码覆盖率检查工具。

特性:

  • 可检查包括语句、分支和函数覆盖,以及反向工程的代码行覆盖

  • 模块加载钩子 可随时跟踪代码

  • 命令行工具 可运行带覆盖率检查的 node 单元测试,不需要对测试运行进行协作

  • 可生成 HTML 和 LCOV 报表

  • 可作为中间件使用,在浏览器进行测试

  • 可在命令行中以库的形式使用

  • 基于 esprima 解析器和 escodegen 代码生成器

  • 在浏览器和 node 0.4.x, 0.6.x, 0.8.x 上测试通过。

示例报表:

Code coverage report for All files

源码地址

istanbul: istanbul 是一个 JavaScript 的代码覆盖率检查工具 (gitee.com)

DbUnit 数据库单元测试工具

授权协议:未知

开发语言:Java

操作系统:跨平台

软件类型:开源软件

开源组织:无

软件简介

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

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

DrJava Java IDE

软件简介

DrJava 是 Java 的轻量级编程环境,旨在促进测试驱动的软件开发。它包括一个智能程序编辑器,一个用于评估程序文本的交互窗格,一个源代码级调试器和一个单元测试工具。

特征

  • 轻量级的 IDE
  • 解释程序,用于交互式评估程序
  • 单元测试
  • 源代码级调试器
  • 跨平台

DOH JavaScript 单元测试框架

软件简介

DOH 是一种基于 Dojo 技术的 JavaScript 单元测试框架,也是目前主流的 Dojo 单元测试技术。

Silverlight Toolkit(Web应用开发、 AJAX框架/RIA)

软件简介

Silverlight 工具包是一个 Silverlight 控件、组件和工具的集合。它增加了新功 能的设计和开发,为社区提供有效途径以帮助形成产品开发作出贡献的思想和错误报告。它包括完整的源代码,单元测试,样品和文件 16 项新的涉及图表,设计,布局,用户输入。

BUI Web UI 类库

软件简介

BUI 是基于 jQuery 兼容 Kissy 的 Web UI 类库。专注于解决后台系统的框架方案。

文件结构:

  • assets : css 文件,基于 bootstrap 的 css 样式,可以自己在此基础上编译出新的版本
  • build : js 和 css 文件打包好的目录
  • src: js 的源文件
  • test: 单元测试,所有控件的单元测试都在内部,以 php 的方式提供
  • tools : 文件打包,以及生成文件的工具
  • docs : 源文件中未提供,但是可以自己执行 tools/jsduck/run.bat 文件,请不要提交此文件夹

Gitee 极速下载/bui

PyTestReport Python 单元测试框架

软件简介

一个由 HTMLTestRunner 项目为灵感,并基于 HTMLTestRunner 进行二次开发的一个项目。主要在 API 调用、报告样式、扩展性等方面进行了增强。

点击查看 HTMLTestRunner 的官网HTMLTestRunner 是基于 Python 单元测试官方实现的 TextTestResult 为参考,实现了对应的 HTMLTestResult 版本。

通过 pip 安装

pip install PyTestRepor

单元测试样例 (unittest)

import unittest
import pytestreport

class MyTest(unittest.TestCase):
    def testTrue(self):
        self.assertTrue(True)
        
if __name__ == '__main__':
    pytestreport.main(verbosity=2)

单元测试样例(pytest)

对于 pytest 框架,收集其测试结果信息是通过 pytest 插件形式实现的。使用之前只要确保正常安装了 PyTestReport 即可。具体使用方式如下:

import pytest

def testTrue():
    assert True

def testFalse():
    assert False

def testError():
    1 / 0

@pytest.mark.skip(reason="misunderstood the API")
def testSkip():
    assert 1 == 1

@pytest.mark.xfail(reason="Xpass")
def testXPass():
    assert True

@pytest.mark.xfail(reason="Xfail")
def testXFail():
    assert False


if __name__ == '__main__':
    pytest.main(["-s", "pytest_Demo.py", "--pytest_report", "Pytest_Report.html"])

模板展示

更多详情文档和功能,请移步软件主页查看

 PyTestReport: 一个由HTMLTestRunner项目为灵感,并基于HTMLTestRunner进行二次开发的一个项目 (gitee.com)

PerlUnit 单元测试框架

软件简介

Perl 版 JUnit,一款单元测试框架。

主要特性

  • 基于 JUnit (3.2) 模型
  • 支持旧版本 Perl
  • 可生成 "green bar"

DUnit Delphi 单元测试框架

软件简介

DUnit 是一个 Delphi 代码的自动化单元测试框架,是 JUnit 的 Delphi 语言的移植版本。

NodeUnit Node.js 单元测试框架

软件简介

NodeUnit 是 Node.js 的单元测试框架,基于 assert 模块为 node.js 和浏览器提供了简单的异步单元测试。

特征

  • 使用简单
  • 只需从模块中导出测试
  • 与 node.js 一起使用并在浏览器中
  • 帮助您在测试异步代码时避免常见的陷阱
  • 如果您愿意,可以使用 setUp 和 tearDown 函数轻松添加测试用例
  • 灵活的报告程序,用于自定义输出,对 HTML 和 jUnit XML 的内置支持
  • 允许使用模拟和存根

CUnit C 语言单元测试框架

软件简介

继 Junit CppUnit 的成功后, c 语言环境下也出现了开发源码的白盒测试用例 CUnit。CUnit 以静态库的形式提供给用户使用,用户编写程序的时候直接链接此静态库就可以了。它提供了一个简单的单元测试框架,并且为常用的数据类型提供了丰富的断言语句支持。

tSQLt SQL Server 单元测试框架

软件简介

tSQLt 是一个 SQL Server 数据库的单元测试框架,使用事务方式运行可用来测试数据库模型,比较表的存储数据。它还提供了假表的能力和间谍程序,所测试的单位可以被分离出来。

Robolectric Android 单元测试框架

软件简介

Robolectric 是一款 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!"));
  }
}

Gitee 极速下载/robolectric 

CHEAT C 语言单元测试框架

软件简介

CHEAT 是一个微型的 C 语言单元测试框架。没有任何依赖和安装配置,使用简单只需一个头文件和一个测试用例即可,示例代码:

#include <cheat.h>

CHEAT_TEST(mathematics_still_work,
    cheat_assert(2 + 2 == 4);
    cheat_assert_not(2 + 2 == 5);
)

https://github.com/Tuplanolla/cheat 

PyUnit Python 单元测试框架

软件简介

Python 单元测试框架(The Python unit testing framework),简称为 PyUnit, 是 Kent Beck 和 Erich Gamma 这两位聪明的家伙所设计的 JUnit 的 Python 版本。 而 JUnit 又是 Kent 设计的 Smalltalk 测试框架的 Java 版本。它们都是各自语言的标准测试框架。

Testify PHP 单元测试框架

软件简介

Testify (Testify.php) 是个极小的 PHP 5.3+ 单元测试框架。

代码示例:

require 'vendor/autoload.php';

use Math\MyCalc;
use Testify\Testify;$tf = new Testify("MyCalc Test Suite");$tf->beforeEach(function($tf) {
    $tf->data->calc = new MyCalc(10);});$tf->test("Testing the add() method", function($tf) {
    $calc = $tf->data->calc;

    $calc->add(4);
    $tf->assert($calc->result() == 14);

    $calc->add(-6);
    $tf->assertEquals($calc->result(), 8);});$tf->test("Testing the mul() method", function($tf) {
    $calc = $tf->data->calc;

    $calc->mul(1.5);
    $tf->assertEquals($calc->result(), 12);

    $calc->mul(-1);
    $tf->assertEquals($calc->result(), -12);});$tf();

Gitee 极速下载/testify

UnitC++ C++ 单元测试库

软件简介

UnitC++ 是一个流行的、轻量级的,只包含 C++ 头文件的一个单元测试库。

示例代码:

#include <UnitCpp/Test.h>

TEST(MyString, length_test)
{
  MyString str("This is a string");
  TEST_EQUAL(str.length(), 16);
  TEST_NOT_EQUAL(str.length(), 17);
  TEST_LESS_THAN(str.length(), 20);
  TEST_MORE_THAN(str.length(), 10);
  TEST_APPROX_EQUAL(str.length(), 15, 1.1); // test the length is within 1.1 of 15
}

TEST(MyString, validity_test)
{
  MyString invalid_string;
  TEST_FALSE(invalid_string.valid());

  MyString valid_string("");
  TEST_TRUE(valid_string.valid());

#ifdef UNITCPP_TEST_THROWS_AVAILABLE
  TEST_THROWS([&](){invalid_string.length();}, MyString::InvalidStringException);
#endif // UNITCPP_TEST_THROWS_AVAILABLE

}

xUnit.net .NET 单元测试框架

软件简介

NUnit 的创造者 Jim Newkirk 公布了一个新的单元测试框架,叫做 xUnit.net。 这个以 NUnit 接班人自许的新框架打算消除 NUnit 的错误和缺点,并打算在框架中加入一些最佳实践和扩展能力。

Jim Newkirk 和 Brad  Wilson 这两位 xUnit.net 的创造者,从 NUnit 和其他单元测试框架的经验中总结出来以下改进:

  • 为每个测试方法产生一个对象实例

  • 取消了 [SetUp] 和 [TearDown]

  • 取消了 [ExpectedException]

  • 类似于 Aspect 的功能

  • 减少了自定义属性(Attribute)的数目

  • 采用泛型

  • 匿名委托

  • 可扩展的断言

  • 可扩展的测试方法

  • 可扩展的测试类

xUnit.net 减少了属性(Attributes)的数量,属性被用来控制测试和测试的执行过程。其中有个 [Test] 属性用来标出测试方法。跟 NUnit、MbUnit 和 MSTest 不 同,测试类并没有任何标志。xUnit.net 直接在程序集中查找所有公开类的全部公开测试方法。

xunit: NUnit 的创造者 Jim Newkirk 公布了一个新的单元测试框架,叫做 xUnit.net (gitee.com)

WSUnit Web 服务单元测试

软件简介

向 PHPUnit 注册测试监听器的可能性使得在测试运行器的特定状态下(例如,当测试开始时)执行行动变得极其容易。WSUnit 高度利用了这种可能性,并监听了一些发出的信号。

WSUnit 通过配置将单元测试提升到功能测试。一旦配置好,测试监听器就会发送一个请求到一个指定的位置,记录响应的主体和头,并将其持久化到文件系统中。然后,测试本身,例如,验证响应的正确性。这背后的想法是,不要被迫多次编写 API 测试,并增加对已编写的验证的重复使用。

wsunit: 向 PHPUnit 注册测试监听器的可能性使得在测试运行器的特定状态下(例如,当测试开始时)执行行动变得极其容易 (gitee.com)

Cutter C 语言单元测试框架

软件简介

Cutter 是一个 C 语言下的单元测试框架。它有许多先进的功能,如覆盖,数据驱动测试等。

Randoop 单元测试用例自动生成

软件简介

Randoop 是一个用来自动生成单元测试用例的框架,基于 JUnit 格式。

OCUnit Objective-C 的单元测试框架

软件简介

OCUnit 是一个 Objective-C 的单元测试框架,用于 Mac OS X, Mac OS X Server, GNUSTEP, YellowBox/Cocoa and WebObjects/Objective C 环境 .

easyMock 模拟测试辅助工具

软件简介

EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。

Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。

编 写自定义的 Mock 对象需要额外的编码工作,同时也可能引入错误。EasyMock 提供了根据指定接口动态构建 Mock 对象的方法,避免了手工编写 Mock 对象。本文将向您展示如何使用 EasyMock 进行单元测试,并对 EasyMock 的原理进行分析。

Gitee 极速下载/EasyMock 

Thread Weaver Java 多线程单元测试

软件简介

Thread Weaver 是一个用于编写多线程单元测试的 Java 框架。它提供一种机制用于创建在代码中创建断点,当到达断点时将终止一个线程的执行。而其它线程还可以继续运行当第一个被阻塞时,这让你可以编写可重复的测试来检查竞争件和线程安全。

CppUTest C/C++ 单元测试框架

软件简介

CppUTest 是一个功能全面的测试框架。

CppUTest 是为了支持在多种操作系统上开发嵌入式软件而特别设计的。CppUTest 的宏被设计成不需要了解 C++ 也可以写测试用例。这使得 C 程序员更容易用这个测试框架。

CppUTest 只使用 C++ 语言中主要的那部分子集,这种选择很好地适应了那些编译器不能完全支持全部 C++ 语言特性的嵌入式开发。你会看到用 Unity 和 CppUTest 写出的单元测试几乎一模一样。你当然可以选择任意一个测试框架来进行你的产品开发。

cpputest: CppUTest 是一个功能全面的测试框架 (gitee.com)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值