单元测试工具PyUnit、NoseXUnit、CppTest、AutoMoq介绍

以下为你介绍的单元测试工具都可用在Linux系统上:PyUnit(Python单元测试框架)、NoseXUnit(产生类似JUnit的使用PyUnit的XML报告)、CppTest(C++单元测试框架)、AutoMoq(自动测试容器)。

1、PyUnit(Python单元测试框架)

单元测试工具PyUnit、NoseXUnit、CppTest、AutoMoq介绍

PyUnit是一个基于JUnit和XUnit的Python单元测试框架,分别是Java和SmallTalk的实际标准框架。提供了一种标准的、经过验证的、简单而优雅的方式来编写Python软件的单元测试,还提供了GUI。

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

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

2、NoseXUnit(产生类似JUnit的使用PyUnit的XML报告)

单元测试工具PyUnit、NoseXUnit、CppTest、AutoMoq介绍

NoseXUnit 提供一种方便的方式用来产生类似JUnit的使用PyUnit的XML报告。它还提供了优美的报告生成代码覆盖率和审计功能。我们的目标是提供一种使用PyUnit以这种简单XML格式生成测试报告的方法。

NoseXUnit现在与Nose 0.11.1兼容,此版本0.3.3主要是错误修复版本,我们还添加了降级模式来处理多进程测试运行程序(nose中的--processes选项)。

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

3、CppTest(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。

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

4、AutoMoq(自动测试容器)

AutoMoqer 是一个自动测试容器,可根据需要自动创建任何的伪对象来进行某个类的实例化,可通过 mocker 来访问这些伪对象。

示例代码:

var mocker = new AutoMoqer();

mocker.GetMock<IDataDependency>()

.Setup(x => x.GetData())

.Returns("TEST DATA");

var classToTest = mocker.Resolve<ClassToTest>();

classToTest.DoSomething();

mocker.GetMock<IDependencyToCheck>()

.Setup(x=>x.CallMe("TEST"), Times.Once());

CallMe("TEST"), Times.Once());

下载地址:https://github.com/darrencauthon/AutoMoq

注明

以上就是单元测试工具PyUnit、NoseXUnit、CppTest、AutoMoq的介绍内容,这些单元测试工具都能使用在Linux操作系统中。

栏目相关文章