单元测试工具zMMIX、Shmock、CaptureMock、zCUT介绍

以下为你介绍的单元测试工具都可用在Linux系统上:zMMIX(MMIX单元测试框架)、Shmock(PHP 测试框架)、CaptureMock(Python 模拟测试框架)、zCUT(C单元测试框架)。

1、zMMIX(MMIX单元测试框架)

zMMIX 是一个 MMIX 单元测试框架:用于测试TAOCP里面的MMIX程序

特点:

简单的case编写-用户不再需要自己编写:Main代码去运行、查看一段MMIX程序的运行结果。

测试数据驱动-用户主要关心input、output即可。

丰富的断言-良好的结果输出风格。

make and install:

mkdir build

cd build

cmake ..

make

make install

use:

% test for demo.mms

zmmix_gt test_demo.mmt

mmixal -b 120 test_demo.mms

mmix test_demo

通常,测试源使用mmt作为后缀。 对于电流,必须将.mms和.mmt放在同一目录中。因为原始mmixal使用72作为默认的行缓冲区大小,所以它必须指定buffersize选项。当然,您可以修改mmixal.w或mmixal.c源并重新编译。

下载地址:https://github.com/zBaitu/zMMIX

2、Shmock(PHP 测试框架)

Shmock(SHorthand for MOCKing)是 PHPUnit 创建 mocks 的平稳替代,使用 EasyMock 的 mock/replay 概念,但是又使用 mocking 定义的闭包范围。

示例代码:

<?php

namespace Foo;

/**     * Here's a class we're trying to test yay.     */

class Foo

{

private $foo = 0;

private $incrementing_service = null;

public function __construct(Incrementing_Service $incrementing_service)

{

$this->incrementing_service = $incrementing_service;

}

public function next_foo()

{

$this->foo = $this->incrementing_service->increment($this->foo);

return $this->foo;

}

}

/**     * Our test case runs the same test case twice - once with the original PHPUnit mocking     * syntax and a second time with Shmock syntax.     */

class Foo_Test extends PHPUnit_Framework_TestCase

{

use \Shmock\Shmockers; // This enables the use of the Shmock helper methods (replicated below)

public function test_phpunit_original_mocking_syntax()

{

// this is the original PHPUnit mock syntax

$incrementing_service_mock = $this->getMock('\Foo\Incrementing_Service', array('increment'));

$incrementing_service_mock->expects($this->once())

->method('increment')

->with($this->equalTo(0))

->will($this->returnValue(1));

$foo = new Foo($incrementing_service_mock);

$this->assertEquals(1, $foo->next_foo(0));

}

/**         * Create a shmock representation for $class_name and configure expected         * mock interaction with $conf_closure         * @return Shmock A fully configured mock object         * @note You do not need this protected method if you use the Shmockers trait, shown above         */

protected function shmock($class_name, $conf_closure)

{

return \Shmock\Shmock::create_class($this, $class_name, $conf_closure);

}

public function test_shmock_syntax()

{

// here's shmock. Neat huh?

$incrementing_service_mock = $this->shmock('\Foo\Incrementing_Service', function($shmock)

{

$shmock->increment(0)->return_value(1);

});

$foo = new Foo($incrementing_service_mock);

$this->assertEquals(1, $foo->next_foo(0));

}

}

安装:

Shmock可以直接从Packagist安装:

"require": {

"box/shmock": "1.0.0.x-dev"

}

或者,您可以将Shmock.php和Shmockers.php下载到测试目录中并运行:

require_once 'Shmock.php';

PHPUnit应该已经在加载路径上才能正常工作。

下载地址:https://github.com/box/shmock

3、CaptureMock(Python 模拟测试框架)

单元测试工具zMMIX、Shmock、CaptureMock、zCUT介绍

CaptureMock 提供 Python 模拟的捕获-重放功能,建立在命令行和客户机-服务器通信的基础上。CaptureMock 所谓的方法就是 捕获-重放 方法。它在用户‘记录’模拟子系统的时候观察代码和模拟出来的子系统的交互,并且用它自己的格式记录在文本文件中。

当用户在‘重放模式’运行测试时,CaptureMock 会扮演还在酝酿中的子系统,用户甚至可以不用安装真正的子系统。用户每次运行测试的时候都可以选择是在真实子系统的下还是校验或者重建捕获到的模拟子系统,亦或者是之前运行捕获的模拟子系统。如果在‘重放模式’下,CaptureMock 不能接收到之前相同的调用,那么测试将会失败,提示用户是否想在记录模式下重建模拟子系统。

下载地址:https://launchpad.net/capturemock

4、zCUT(C单元测试框架)

C单元测试框架。

特点:

C语言实现,clang编译,std=gnu89。

使用宏简单地注册case,suite,丰富的断言,风格类似google test。

良好的结果输出。

下载地址:https://github.com/zBaitu/zCUT

注明

以上就是单元测试工具zMMIX、Shmock、CaptureMock、zCUT的介绍内容,这些单元测试工具都能使用在Linux操作系统中。

栏目相关文章