51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 17206|回复: 22
打印 上一主题 下一主题

[讨论] 也是一道面试题:C/C++ 单元测试用例的设计

[复制链接]

该用户从未签到

1#
发表于 2004-7-18 19:19:01 | 显示全部楼层
我也想知道,我最近一直在想如何测试一个没有返回值的函数,如:

public void  foo(){
System.out.println("This is foo method");
}
回复 支持 反对

使用道具 举报

该用户从未签到

2#
发表于 2004-7-19 05:49:03 | 显示全部楼层
站长帮我吧,我想测一个返回值是void的函数,因为没有期望值可以做比较,所以无法预知里面的代码运行时有没有bug,能不能教我一种方法怎么去测试这种函数。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2004-7-19 05:59:08 | 显示全部楼层
给个具体的例子吧,要测试下面一个函数,该怎么测试:

//用户的一个帐户将要透支,就从该用户的其它帐户把不够的钱转移到这个帐户里
public void performOverdraftProtection(Account account,  float withdrawalAmount)  throws InsufficientBalanceException {
        float transferAmountNeeded
            = withdrawalAmount - account.getAvailableBalance();
        Customer customer = account.getCustomer();
        Collection overdraftAccounts
            = customer.getOverdraftAccounts();
        for (Iterator iter = overdraftAccounts.iterator();
             iter.hasNext(); ) {
            Account overdraftAccount = (Account)iter.next();
            if (overdraftAccount == account) {
                continue;
            }
            if (transferAmountNeeded <
                overdraftAccount.getAvailableBalance()) {
                overdraftAccount.debit(transferAmountNeeded);
                account.credit(transferAmountNeeded);
                return;
            }
        }
        throw new InsufficientBalanceException(
                               "Insufficient funds in overdraft accounts");
    }

[ Last edited by lhtia on 2004-7-19 at 06:00 ]
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2004-7-19 20:04:19 | 显示全部楼层
谢谢站长详细的解答,太感谢了。

这个函数本身是存在一些问题,不过,这个函数是没有返回值的,它的功能在于,如果能找到这么一个帐户能把钱转移到将要透支的那个帐户里,那么就实现:
                overdraftAccount.debit(transferAmountNeeded);
                account.credit(transferAmountNeeded);
如果找不到这么一个帐户,就意味着将要透支的那个帐户就不能取那些钱了,这时就:throw new InsufficientBalanceException(
                               "Insufficient funds in overdraft accounts");

所以这个单元功能实现在于改变全局变量,或抛出一个Exception。现在我的问题是,如何把这两种可能与期望值对照起来,告诉测试员是不是一致,有没有bug。

如果函数有返回值的话,那就好办了,直接在测试驱动里调用这个函数,把结果与期望值比较就可以了。但是要测试void函数,该怎么去确定期望值呢,如上述的,如果抛出了Exception,那测试驱动里如何编代码去确定这个期望值,又如何比较呢。。。

我写的有点多了,不知道有没有解释明白。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2004-7-20 05:12:40 | 显示全部楼层
多谢站长了,看样子有时候还是不得不添加一些代码来帮助测试。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-12 13:12 , Processed in 0.064113 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表