单元测试工具CT-Eclipse、TUT、StrutsTestCase、MRUnit介绍

以下为你介绍的单元测试工具都可用在Linux系统上:CT-Eclipse(Eclipse的持续测试插件)、TUT(轻量级的C++单元测试框架)、StrutsTestCase(Struts测试框架)、MRUnit(MapReduce单元测试框架)。

1、CT-Eclipse(Eclipse的持续测试插件)

CT-Eclipse 是一款 Eclipse 的持续测试插件。

首先解释一下,英文是Continuous testing,中文是持续测试。

就是测试在后台自动运行,指出你的错误,然后对应的测试用例代码中会有错误提示。举一个简单例子在IDE中,我们写了代码以后然后顺手快捷键保存,然后后台自动编译,然后报错,然后我们修改之到无错。然后运行单元测试,如果出错我们会在JUnit的Eclipse插件中查看错误,然后改之,然后运行单元测试。

CT-Eclipse包括按优先级顺序运行测试以及过滤掉不相关测试的功能。我们发现,由于测试如此频繁地运行,一个简单的“Most Recently Failed First”度量足以实现很好的优先级划分。您可能对测试的优先级和过滤有更复杂的想法,这些可以作为CT-Eclipse提供的扩展点的插件提供。

首次引入时,CT-Eclipse旨在作为一个临时项目包含在Eclipse IDE中。但是,我们决定将其作为行为良好的第三方插件独立进行维护。

下载地址:http://ct-eclipse.tigris.org/

2、TUT(轻量级的C++单元测试框架)

单元测试工具CT-Eclipse、TUT、StrutsTestCase、MRUnit介绍

TUT (Template Unit Tests的缩写)是一个轻量级的C++单元测试框架。

TUT是一个轻量级的框架,TUT是使用template技术写的,完全没有macro,除去例子,它的代码一共只有两个头文件。我们完全不用build这个框架然后设置编译连接那么多麻烦,只要在编写Unit test的时候,把这两个头文件拷贝到项目目录或者设置一下头文件的包含路径就可以了。

TUT把Unit test case通过group-test的层次组织,用户可以把相似的test case放到同一个group,这个group有一个唯一的名字,group包含多个test,包含的test数量取决于你的编译器允许的template嵌套深度。用户可以选择运行所有的测试或者只是部分group,甚至部分test。在每个test里面,你可以使用TUT提供的一些方法来确认测试结果的正确性,告诉TUT这个测试是成功还是失败。

特点:

无论您使用哪种编译器或OS,TUT都非常易于移植。

TUT仅包含头文件,无需库,部署从未如此简单。

自定义报告器界面允许将TUT与世界上几乎所有的IDE或工具集成。

支持多进程测试(正在测试死锁和超时)。

TUT是免费的,并根据类似BSD的许可证进行分发。

测试分为命名的测试组。

Regression(应用程序中的所有测试),一组或一次测试执行。

纯C++,没有宏。

示例代码:

#include <tut/tut.hpp>

namespace tut

{

struct basic{};

typedef test_group<basic> factory;

typedef factory::object object;

}

namespace

{

tut::factory tf("basic test");

}

namespace tut

{

template<>

template<>

void object::test<1>()

{

ensure_equals("2+2=?", 2+2, 4);

}

}

下载地址:https://github.com/mrzechonek/tut-framework

3、StrutsTestCase(Struts测试框架)

StrutsTestCase是基于Junit的一个方便测试struts框架的测试框架。

StrutsTestCase for JUnit是标准JUnit TestCase类的扩展,该类提供了用于测试基于Struts框架的代码的工具。StrutsTestCase提供了Mock Object方法和Cactus方法来实际运行Struts ActionServlet,允许您在有或没有运行servlet引擎的情况下测试Struts代码。因为StrutsTestCase使用ActionServlet控制器来测试您的代码,所以您不仅可以测试Action对象的实现,还可以测试映射,表单Bean和转发声明。而且由于StrutsTestCase已经提供了验证方法,因此编写单元测试用例非常简单快捷。

StrutsTestCase符合Java Servlet 2.2、2.3和2.4规范,并支持Struts 1.2/1.3,Cactus 1.7和JUnit 3.8.1。

请注意,StrutsTestCase不再与Struts 1.0向后兼容,与Struts 1.0兼容的新版本是StrutsTestCase v2.0。

下载地址:https://sourceforge.net/projects/strutstestcase/

4、MRUnit(MapReduce单元测试框架)

单元测试工具CT-Eclipse、TUT、StrutsTestCase、MRUnit介绍

MRUnit是由Couldera公司开发的专门针对 Hadoop中编写MapReduce单元测试的框架,基本原理是JUnit4和 EasyMock。MR就是Map和Reduce的缩写。MRUnit框架非常精简,其核心的单元测试依赖于JUnit。而且MRUnit实现了一套 Mock对象来控制OutputCollector的操作,从而可以拦截OutputCollector的输出,和我们的期望结果进行比较,达到自动断言的目的。

有了MRUnit,对MR程序做重构的时候,只要明确输入和输出,就可以写出单元测试,并且在放到群集校验前进行试验,从而节省时间和资源,也能更快的定位到问题。而进行重构的话,只要写得足够详细的单元测试都是绿色的话,那么基本就可以保证在群集运行的结果也是正常的。

MRUnit不在Apache标准的Hadoop的发行版中,而是在Couldera公司的增强版本中hadoop- 0.20.1+133.tar.gz的contrib\mrunit\hadoop-0.20.1+169.56-mrunit.jar,已经贴在附件中。只要把它和Junit4的jar添加到Hadoop程序项目的classpath中,就可以使用MRUnit了。

MRUnit包含四种 Driver:MapDriver,ReduceDriver,MapReduceDriver,PipelineMapReduceDriver。可以根据自己的需要选择合适的Driver。

给出一个Reduce的很简单例子,Reduce的逻辑就是把Value中的各个值相加。

public class ExtractKeywordTest {

private Reducer<Text, Text, Text, Text> reducer;

private ReduceDriver<Text, Text, Text, Text> reduceDriver;

@Before

public void setUp() throws Exception {

reducer = new ExtractKeywordAcookie.Reduce();

reduceDriver = new ReduceDriver<Text, Text, Text, Text>(reducer);

}

@Test

public void testReduce() {

List<Text> values = new ArrayList<Text>();

values.add(new Text(1.0_0.1));

values.add(new Text(2.0_0.2));

values.add(new Text(3.0_0.3));

reduceDriver.withInput(new Text(20100106_00_IBM), values)

.withOutput(new Text(20100106_00_IBM_6.00_0.60_), null)

.runTest();

}

下载地址:http://mrunit.apache.org/

注明

以上就是单元测试工具CT-Eclipse、TUT、StrutsTestCase、MRUnit的介绍内容,这些单元测试工具都能使用在Linux操作系统中。

栏目相关文章