谁有白盒测试的SAMPLE

mrdone 2009-02-05 01:56:28
我现在需要做白盒测试,可是没有做过,不知道怎么做,看了一段时间后,文档可以写出来了,但是,具体测试还是不清楚,
比如:
void DispUPInfo(int iUpdateStatus)
{
switch(iUpdateStatus)
{
case UPDATEFAIL:
wcscpy(m_tcrUpdateText,m_tcrUpdateFail);
break;
case UPDATESUCCESS:
wcscpy(m_tcrUpdateText,m_tcrUpdateSuccess);
break;
case UPDATING:
wcscpy(m_tcrUpdateText,m_tcrUpdating);
break;
}
::InvalidateRect(m_hWnd,NULL,FALSE);

if(iUpdateStatus == UPDATEFAIL || iUpdateStatus == UPDATESUCCESS)
{
if (::IsWindow(m_cProgressBar.m_hWnd))
{
m_cProgressBar.SetPos(300);
}

}
}
上面的代码,如果按我的测试方法,就是把所有系统的东西注释掉。
wcscpy(m_tcrUpdateText,m_tcrUpdateFail);
::InvalidateRect(m_hWnd,NULL,FALSE);
m_cProgressBar.SetPos(300);
IsWindow(m_cProgressBar.m_hWnd);
等注释掉。
哪位大侠可以帮着写下测试代码?我先在这里谢谢了。
如果有测试工程的话,最好把测试工程一起发过来。(我用的是VC)
我的邮箱是:mrdone@163.com
谢谢,邮件收到后,马上结贴。
...全文
184 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrdone 2011-06-13
  • 打赏
  • 举报
回复
谢谢大家了。真不好意思没有及时结贴。
oyljerry 2009-02-06
  • 打赏
  • 举报
回复
你可以先从函数方法等开始测试,像IsWindow这属于方法内部,你可以先不用考虑,只用关心输入,输出结果是否符合你的预期来测试等...
mrdone 2009-02-06
  • 打赏
  • 举报
回复
嗯,CPPUNIT我也试过了,但是还存在问题,
因为我们要测试的是用WTL写的一个工程,里面好多的系统调用。

在测试的时候,如何对系统调用进行测试呢?
比如说:IsWindow(hwnd)

我是不是不需要对它进行测试?
直接把它注释掉就可以了?

jixingzhong 2009-02-05
  • 打赏
  • 举报
回复
用cppunit做单元测试的结构

学校的项目已经进入到了设计阶段,我参加的是web service的部分。这部分为了和core部分连接所以选择用c++来实现。于是看了一些有关针对c++的单元测试的framework,发现cppunit还是比较简单好用的。

第一步:如何安装 (我的运行环境: debian Linux, gcc)
cppunit 的安装是相当标准的linux的安装过程
a. 下载cppunit的源文件
b. 解压缩
c. 编译安装程序
$./configure -prefix=/home/me
$make
$make install
这里 -prefix=/home/me的意思是把安装的根目录设置为/home/me(我的私人目录, 我不是管理员所以只好安装到自己的“家“了).
安装完成以后头文件存储在/home/me/include,库文件存储在/home/me/lib。
因为不是安装在默认的位置所以在编译和连结的时候要指定路径。
例如:g++ -g -L/home/me/lib -lcppunit -ldl -I/home/me/include Main.C

第二步: 下面我介绍一下个人认为比较实用的测试程序的结构。
这个测试类从CppUnit::TestFixture派生,并且由下面的部分组成:
a. setUp() 方法
在这个方法里实现一些准备工作,例如生成一些被测类的实列
setUp(){
mc1 = new MyClass();
}
b. tearDown() 方法
在这个方法里实现扫尾的工作,例如释放内存
tearDown(){
delete mc1;
}
c. 测试方法的方法
例如,在被测类里有一个方法叫做:bool operator==(MyComplex &a), 我们
要写一个名字叫作test_Equality的方法来测试。
void test_Equality() {
CPPUNIT_ASSERT( *mc1 == *mc2 );
CPPUNIT_ASSERT( !(*mc1 == *mc3) );
}
CPPUNIT_ASSERT用来判断里面的表达是是否为真。
d. 把几个测试方法“打包”为一个suite。
static CppUnit::Test *suite(){
CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite("TMyComplex");
suiteOfTests->addTest(new CppUnit::TestCaller
("testEquality",
&TMyComplex::testEquality));

return suiteOfTests;
}
测试类就是由这些方法组成, 下面是如何运行测试类的主程序:
CppUnit::TextUi::TestRunner runner;
runner.addTest(TMyComplex::suite());
runner.run();
return 0;
测试是由TestRunner来执行的。
由于很多的工作都是比较固定的,所以我写了一个Perl脚本,这个脚本可以
自动生成一个测试类的框架。
homesos 2009-02-05
  • 打赏
  • 举报
回复
是单元测试吧
常用的是CPPUNIT,开源的
.NET2005以后也自带了单元测试功能,可以尝试使用一下。
masterz 2009-02-05
  • 打赏
  • 举报
回复
用CPPUNIT的比较多,看看相关的文章
http://www.codeguru.com/cpp/misc/samples/testingdebugging/article.php/c4685
Unit Testing with CPPUnit

16,472

社区成员

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

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

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