单元测试工具Phake、UnitC++、NoSQL Unit、Jest介绍

以下为你介绍的单元测试工具都可用在Linux系统上:Phake(PHP 单元测试框架)、UnitC++(C++ 单元测试库)、NoSQL Unit(JUnit 的 NoSQL 扩展)、Jest(JavaScript 单元测试)。

1、Phake(PHP 单元测试框架)

Phake 是 PHP 框架,提供模拟对象,双向测试和方法测试。

Phake 和其他 PHP 模拟框架(PHPUnit,PHPMock 等)最主要的不同之处是 Phake 会使用一个验证策略来确保调用。也就是说,你正常调用代码的时候你就完成代码的测试,确定是否是按计划调用了方法。这跟其他的 PHP 测试框架非常不同,在任何调用之前使用一个期望策略。

安装:

可以使用Composer安装Phake。

将Phake添加为依赖项:

通常,您会将其作为开发依赖项,因此该示例在require-dev部分中进行了显示:

"require-dev": {

"phake/phake": "3.*"

}

运行Composer:php composer.phar install --dev或php composer.phar update phake/phake。

下载地址:https://github.com/mlively/Phake

2、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

}

下载地址:https://bitbucket.org/davidcorne/unitcpp/src/default/

3、NoSQL Unit(JUnit 的 NoSQL 扩展)

单元测试工具Phake、UnitC++、NoSQL Unit、Jest介绍

NoSQL Unit 是 JUnit  的 NoSQL  扩展,可以帮助用户编写 NoSQL 单元测试。NoSQLUnit通过提供一个JUnit扩展可以帮助我们管理NoSQL系统的生命周期,并有助于将数据库维护为已知状态。

NoSQLUnit是一个JUnit扩展,它使使用NoSQL后端的系统的编写单元测试和集成测试更加容易,它由两组规则和一组注释组成。

第一组规则是负责管理数据库生命周期的规则,每个受支持的后端都有两个。

第一个(如果可能的话)它是内存模式。此模式负责以“in-memory”模式启动和停止数据库系统。此模式通常在单元测试执行期间使用。

第二个是托管模式。此模式负责启动NoSQL服务器,但作为远程进程(在本地计算机中)并停止它。这通常将在集成测试执行期间使用。

您可以将它们添加到“测试套件”或“测试类”中,NoSQLUnit只负责启动数据库一次。

第二组规则是负责将数据库保持为已知状态的规则。每个受支持的后端都有自己的后端,可以理解为与已定义数据库的连接,该数据库将用于执行所需的操作以维护系统的稳定性。

请注意,由于NoSQL数据库是异构数据库,因此每个系统都需要自己的实现。

最后提供了两个注释,@UsingDataSet和@ShouldMatchDataSet。

要求:

要运行NoSQLUnit,必须提供JUnit 4.10或更高版本。这是因为NoSQLUnit正在使用Rules,并且它们已从以前的版本更改为4.10。

尽管它可以与JDK 5一起使用,但jars是使用JDK 6编译的。

数据集格式:

{

"name_collection1": [

{

"attribute_1":"value1",

"attribute_2":"value2"

},

{

"attribute_3":2,

"attribute_4":"value4"

}

],

"name_collection2": [

...

],

....}

下载地址:https://github.com/lordofthejars/nosql-unit

4、Jest(JavaScript 单元测试)

单元测试工具Phake、UnitC++、NoSQL Unit、Jest介绍

Jest 可帮你实现无痛的 JavaScript 单元测试支持,由 Facebook 推出。

特点:

开发人员就绪:全面的JavaScript测试解决方案。对于大多数JavaScript项目都可以直接使用。

即时反馈:快速的交互式监视模式仅运行与更改后的文件相关的测试文件。

camera_flash快照测试:捕获大型对象的快照,以简化测试并分析其随时间的变化。

测试代码:

// __tests__/sum-test.js

jest.dontMock('../sum');

describe('sum', function() {

it('adds 1 + 2 to equal 3', function() {

var sum = require('../sum');

expect(sum(1, 2)).toBe(3);

});

});

入门:

使用yarn安装Jest:

yarn add --dev jest

或使用npm:

npm install --save-dev jest

注意:Jest文档使用yarn命令,但是npm也可以使用。

让我们开始编写一个假设函数的测试,该函数将两个数字相加。首先,创建一个sum.js文件:

function sum(a, b) {

return a + b;

}

module.exports = sum;

然后,创建一个名为sum.test.js的文件。这将包含我们的实际测试:

const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {

expect(sum(1, 2)).toBe(3);

});

将以下部分添加到package.json中:

{

"scripts": {

"test": "jest"

}

}

最后,运行yarn test或npm run test,Jest将打印以下消息:

PASS  ./sum.test.js

adds 1 + 2 to equal 3 (5ms)

至此,您刚刚使用Jest成功编写了您的第一个测试!

该测试使用Expect和toBe测试两个值完全相同。

从命令行运行:

您可以使用多种有用的选项直接从CLI运行Jest(如果它在PATH中是全局可用的,例如通过yarn global add jest或npm install jest --global)。

这是在符合my-test的文件上运行Jest的方法,使用config.json作为配置文件,并在运行后显示本机OS通知:

jest my-test --notify --config=config.json

下载地址:https://github.com/facebook/jest

注明

以上就是单元测试工具Phake、UnitC++、NoSQL Unit、Jest的介绍内容,这些单元测试工具都能使用在Linux操作系统中。

栏目相关文章