小南 发表于 2006-12-1 17:55:46

浅谈Nunit和Cppunit

  最近有时间看了下Nunit,玩Cppunit的时候就听说Nunit是C#下的一个单元测试工具,一直在做Web方面的测试,这块差点都忘记光了。还好和FP扯了两句,虽然他提到的对日外包项目我帮不上忙,但隐约想到了他写的Junit,突然想对此类unit测试工具再看一下。
  废话少说,立马下了个Nunit安上。依稀记得按上Cunit后在VS6.0的菜单项里会有多余的选项,也许是按了后Rational Pure之后多的,实在记不得了。稍微翻了下VS2005的菜单,貌似没多什么,不管它了。
  网上找了个简单的程序,扔了进去。开始比较:
1. UI方面:
  C会定义并启动自带的MFC,运行时会显示UI界面:
//添加CppUnit的MFC类型的测试执行器
CppUnit::MfcUi::TestRunner runner;
CppUnit::MfcUi::TestRunner runner_;
......
//运行执行器,显示执行器GUI界面
runner.run();

       N则程序里自带分析DLL的UI界面,只需把DLL拉入即可,但前提时测试代码必须写入那个DLL中。需要提一下的时N在下载文挡中包涵有各个.net版本,并且还有Zip类型的原始安装包,可供二次开发。
2.   执行方面,自己感觉两者涵义并无区别:
  C是以测试工厂来定义测试类,并以测试函数加入测试工厂,来形成一些测试项。
//为被测试类定义一个测试工厂;
CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry("Add");
//测试函数:
void Add::TestCase1()
{
   ...
   CPPUNIT_ASSERT_EQUAL(两个比较值);
}
       N则也是这样的概念,新写一个Namespace,类似测试工厂的概念,然后在其中定义多个Class,类似测试项的概念。这些代码写在被测试对象DLL中,N的Namespace会用类似标签[TestFixture]标记,N的Class会用类似标签[Test]标记。其中运用的比较函数也十分类似:assert();
3. 显示结果方面:两者都以树型结构显示:
  C的树型结构以测试工厂和测试项作为分支;
  N的树型结构以Namespace和Class作为分支;
  C可以添加多个测试工厂,N是否可以添加多个Namespace还没有尝试...,不过在N的界面中有鼠标右键功能,可以很容易地判断哪个测试函数有问题。
  再者,N可以捕捉异常,可以把异常类写做测试项,C并为尝试...。

  N并未有实际项目接触,所以理解仍停留在最浅的层次。把一点小心得写下来,作为以后进一步研究的基础。
注:本文系个人总结,请误转载和引用,以免伤及无辜...

songfun 发表于 2006-12-23 22:09:45

文章是你写的?

qubao0451 发表于 2007-6-10 15:35:36

456

456

小南 发表于 2008-7-4 17:06:41

原帖由 songfun 于 2006-12-23 22:09 发表 http://bbs.51testing.com/images/common/back.gif
文章是你写的?
不是我写的,还会是谁写的...

sundyhui0322 发表于 2008-7-4 23:57:54

先留脚印,代楼主更新

livehome2008 发表于 2008-7-6 11:47:02

写什么了?

云层 发表于 2008-7-7 12:25:43

单元测试框架的原理都是基本相似的

小南 发表于 2011-6-23 14:33:28

5年了...
页: [1]
查看完整版本: 浅谈Nunit和Cppunit