单元测试工具doctest、VSTest、CMockery、Venus介绍

以下为你介绍的单元测试工具都可用在Linux系统上:doctest(C++ 测试框架)、VSTest(Visual Studio 测试平台)、CMockery(C 单元测试的轻量级框架)、Venus(JavaScript 单元测试工具)。

1、doctest(C++ 测试框架)

doctest 是一个新的 C++ 测试框架。与其他功能丰富的替代方案相比,编译时(by orders of magnitude)和运行时是最快的。它提供了编译语言(如 D/Rust/Nim)的能力,并通过提供一个快速,透明和灵活的测试运行器与简洁的界面,可直接在生产代码中编写测试。

它与其他测试框架之间的主要区别:

无论是在包含标头还是写入数千个断言方面,都非常精简编译时间。

即使在针对MSVC/GCC/Clang的最严格的警告级别上也不会产生任何警告。

提供一种使用DOCTEST_CONFIG_DISABLE标识符从二进制文件中删除所有与测试相关的方法的方法。

线程安全-可以从单个测试用例产生的多个线程中使用断言(和日志记录)。

断言可以在测试上下文之外使用-作为通用断言库。

不污染全局名称空间(所有内容都在名称空间doctest中)并且不拖动任何标头。

高度可移植的C++11(对于C++ 98使用标记1.2.9)具有超过180种不同的CI构建。

二进制文件(exe/dll)可以使用另一个二进制文件的测试运行器-因此测试最终在单个注册表中进行。

使用自动记录测试(self-registering test )编译为可执行文件的完整示例:

单元测试工具doctest、VSTest、CMockery、Venus介绍

下载地址:https://github.com/onqtam/doctest

2、VSTest(Visual Studio 测试平台)

Visual Studio Test Platform,简称 VSTest,是由微软开源的 Visual Studio 测试平台。

Visual Studio 测试平台是为测试浏览器和 vstest.console 提供支持的引擎。

它是一个开放和可扩展的测试平台,可以运行测试,收集诊断数据和报告结果。

测试平台支持运行在各种测试框架中编写的测试,并使用可插拔适配器模型。基于用户的选择,所需的测试框架及其对应的适配器可以作为 vsix 或 NuGet 包获得,视情况而定。适配器可以用测试平台公开的公共 API 编写。

测试平台目前作为 Visual Studio 2017 和 .NET Core Tools Preview 3 的一部分提供。

下载地址:https://github.com/Microsoft/vstest

3、CMockery(C 单元测试的轻量级框架)

CMockery 是 Google 发布的用于 C 单元测试的一个轻量级的框架。它很小巧,对其他开源包没有依赖,对被测试代码侵入性小。CMockery 的源代码行数不到 3K,你阅读一下 will_return 和 mock 的源代码就一目了然了。

主要特点:

免费且开源,Google 提供技术支持。

轻量级的框架,使测试更加快速简单。

避免使用复杂的编译器特性,对老版本的编译器来讲,兼容性好。

并不强制要求待测代码必须依赖 C99 标准,这一特性对许多嵌入式系统的开发很有用。

建议:

要在Linux上编译Cmockery库和示例应用程序,请运行:

$ ./configure

$ make

要在Windows上编译,请运行:

> vsvars.bat

> cd windows

> nmake

该代码已在Linux(Ubuntu)和Windows上使用VC++7和VC++8进行了测试。

Motivation:

有多种C单元测试框架可供使用。但是,其中许多都相当复杂,需要最新的编译器技术。一些开发需要使用旧的编译器,这使得使用某些单元测试框架变得困难。此外,许多单元测试框架都假设要测试的代码是针对最终将执行测试的同一平台的应用程序或模块。由于这个假设,许多框架要求在要测试的代码模块中包括标准C库标头,这可能与被测试代码使用的C库的自定义或不完整实现相冲突。

Cmockery仅需要将测试应用程序与标准C库链接即可,这样可以最大程度地减少与标准C库标头的冲突。另外,Cmockery尝试避免使用C编译器的某些较新功能。

这导致Cmockery是一个相对较小的库,可用于测试各种外来代码。如果开发人员希望使用最新的编译器简单地测试应用程序,则最好使用其他单元测试框架。

下载地址:https://github.com/google/cmockery

4、Venus(JavaScript 单元测试工具)

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

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

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

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

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

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

下载地址:https://github.com/linkedin/venus.js

注明

以上就是单元测试工具doctest、VSTest、CMockery、Venus的介绍内容,这些单元测试工具都能使用在Linux操作系统中。

栏目相关文章