哪位有VC下的单元测试工具,请给我一个,不胜感谢!

Robin_Hood_POT 2002-10-28 10:27:29
最好是小一些的,我现在上网不太方便,只能通过邮件收!
Robin_Hood_POT@21cn.com

收到后给分!
...全文
264 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Robin_Hood_POT 2002-10-31
  • 打赏
  • 举报
回复
再放两天再结贴吧!

希望能有更多的朋友看到帖子,使用CppUnit,通过测试使自己的程序更健壮!

如果哪位有更好的工具!希望也能给大家分享!
Robin_Hood_POT 2002-10-31
  • 打赏
  • 举报
回复
大家都很忙啊,呵呵!

我倒找到一个工具CppUnit(www.xprogramming.com),还不错,介绍一下!

1 安装设置
环境要求:
操作系统:Microsoft Windows
开发工具:Microsoft Visual C++
由于CppUnit是开放源代码软件,你可以将CppUnit整个加入你的工程之中,开始你的测试工作。我们并不推荐这种浪费空间和精力的方法,如果你也同意,就请按照下面的步骤安装设置CppUnit。
首先你需要获得一份CppUnit的拷贝,我随文档发布了一份,你也可以到www.xprogramming.com下载最新版本,但要注意下载for Windows版本的。
CppUnit是以压缩文件形式提供的,用Winzip或者WinRAR将之解压缩,然后给包含CppUnit的文件夹起一个喜欢的名字,移动到合适的地方(你后面需要在系统中添加CppUnit的路径)。
好啦,下面检查一下文件夹内容和结构:
CppUnit/: 或许你已经给它起了更好的名字 J
Config/: 配置文件
doc/: CppUnit的文档目录
examples/: 演示程序
hierarchy/: 基于命令行的演示程序
msvc6/: 针对Visual C++ 6.0的源代码
HostApp/: 基于图形界面的演示程序
Include/: CppUnit头文件
cppunit/:
extensions/:
msvc6/:
testrunner/:
Lib/: Lib文件和Dll文件
src/: CppUnit源代码
cppunit/:
msvc6/: 针对Visual C++ 6.0的源代码
TestRunner/: 图形显示界面TestRunner的源代码
检查无误后,在Visual C++中打开HostApp.dsw,把HostApp设置为active project,然后编译,Visual C++会同时编译CppUnit。现在运行HostApp,你会看到如下的窗口:

这是CppUnit的TestRunner窗口,你可以在TestRunner中选定要执行的测试工作,进行测试并查看结果。所有的测试工作被组织成一个树形结构,你可以通过Browse按钮打开Test Hierarchy对话框(如下图),选定全部或者部分测试工作,进行测试。测试完成后,如果所有测试都通过,进度条呈现绿色,否则显示红色,错误报告显示在进度条下面的列表中。测试完毕,点击Close按钮退出TestRunner,程序开始正常运行。

现在,为了让所有工程都能够方便的使用CppUnit进行测试工作,请对Visual C++进行一下设置。在Tools\Options\Directories Tab的相应栏目添加CppUnit的Include目录、Src目录、Lib目录的路径。如果你还有其他辅助工具需要设置路径,请自行完成设定(比如Visual Assist)。然后为了方便起见,请把CppUnit\Lib目录下的TestRunnerd.dll文件拷贝到C:\Windows\System32目录下。
对于要使用CppUnit的工程来说,也要做一点额外的设置,打开项目设置(Projects\Settings)对话框,在Link\General\Library modules添加CppUnitd.lib和TestRunnerd.lib,在C++\C++ Language页选中Enable RTTI,在C++\General\Preprocessor Definitions中添加(也可以不加)USE_TYPEINFO。
2 在工程中使用CppUnit
完成了安装和设置,只需要添加很少的代码就可以在你的工程中使用CppUnit了,下面是一种比较简单的做法(其他做法请参考CppUnit的帮助文档):
请创建两个新文件,在这两个文件中写各种测试代码,比如TestUnit.h和TestUnit.cpp。在TestUnit.h中添加
#include <cppunit/TestCase.h>
#include <cppunit/extensions/HelperMacros.h>

class CUTTestCase : public CppUnit::TestCase
{
CU_TEST_SUITE( CUTTestCase );
CU_TEST( Testvector2 );
CU_TEST( TestCShape );
CU_TEST_SUITE_END();
protected:
void Testvector2( void );
void TestCShape( void );
};
在UnitTest.cpp中添加
#include "StdAfx.h"
#include "UnitTest.h"
#include "CmnHdr.h"
#include <cppunit/extensions/TestSuiteBuilder.h>

CU_TEST_SUITE_REGISTRATION( CUTTestCase );

void CUTTestCase::Testvector2( void )
{
vector2 TestRegion;
assert( 0 == TestRegion.GetWidth() );

pos = CPoint( -100, -200 );
assert( 0 == TestRegion.Get( pos ) );
assert( false == TestRegion.Set( pos, 0 ) );
……
……
}

void CUTTestCase::TestCShape( void )
{
assert( 1 == 1 );
}
CU_TEST_XXX宏完成创建测试任务树的工作(参看Test Hierarchy图),你所要做的就是从CppUnit::TestCase派生出自己的测试类,编写各种测试函数,然后用CU_TEST_XXX宏创建测试任务树。注意,CppUnit会自动截获测试函数中出现的异常和错误信息,显示在测试结果中,所以,在测试函数中放心大胆的尽情攻击你的代码吧,不要客气。
有了测试代码,我们还需要借助TestRunner来进行测试工作并查看结果,TestRunner弹出的时机很重要,最好在程序的各项初始化都完成以后,一般来说,有两个地方比较合适,一个是在CWinApp的InitInstance函数的最后,一个是在CDocument的OnNewDocument中。下面是在InitInstance函数中处理:
#include <msvc6/TestRunner/TestRunner.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
…………
BOOL CTetricsApp::InitInstance()
{
…………
TestRunner runner;
runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest() );
runner.run();
…………
}
好啦,万事大吉,怎么样简单吧!编译运行一下,看到测试窗口TestRunner了吧!现在你就可以轻松的工作了,坚持对你的代码进行全面的测试,然后享受测试带给你的成功吧!
当然,也可能你今天恰好比较衰,TestRunner出错了!看看下面的方法能不能帮助你吧。
3 常见问题
资源ID冲突:CppUnit的TestRunner使用了一些对话框资源,他们占用的ID范围是128-132,如果你的程序加入CppUnit后无法正常运行,检查一下ID是否有冲突,解决后再试试看。
修改测试任务树:修改测试任务树后程序无法正常运行,通常是删除一些节点时会出现这种情况。比如我在学习使用CppUnit时,贪心创建了三个测试类,后来发现一个就够了,结果删除了两个测试类后再运行程序就会异常。解决方法,打开注册表编辑器(Regedit),查找到测试程序的主键,删除下面的CppUnit主键。
dwei 2002-10-28
  • 打赏
  • 举报
回复
强烈关注!
^_^

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧