社区
Delphi
帖子详情
关于单元测试的问题,我怎么测试类的私有方法呢?
老码不识途
2006-06-20 09:28:09
如题,多谢各位有经验的GGJJDDMM帮忙,有分嘀!
...全文
490
4
打赏
收藏
关于单元测试的问题,我怎么测试类的私有方法呢?
如题,多谢各位有经验的GGJJDDMM帮忙,有分嘀!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangqi19820913
2006-10-24
打赏
举报
回复
数据库程序:DBUnit
网络程序:htmlUnit、httpUnit
老码不识途
2006-10-10
打赏
举报
回复
多谢楼上两位,那么数据库程序,网络程序如何进行单元测试呢?
ysai
2006-06-21
打赏
举报
回复
私有方法肯定是要被调用的,否则那段代码就是废代码
比如函数A私有,而函数B公有并调用了函数A,那直接测试B不就行了?
wudi_1982
2006-06-21
打赏
举报
回复
不明白你想怎么测试,如果只是简单的测试功能,那么直接测试不就完了,或者是先把私有改成公有的。。
当然,除了这些也有别的办法,例如用DELPHI中的tlist举例。看看TLIST的源码,你会发FCount是一个私有域,理论上我们无法直接访问。但看看他的源码,我们可以注意到一点,我们看到,Count读是直接读FCount的值,而写操作是调用SetCount()函数。仔细思考一下这个问题:既然“Count读是直接读FCount的值”,那么,Count的地址是不是也直接指向FCount呢???
让我们用一段代码来证明它:
program testFixCount;
uses classes, Dialogs, sysUtils;
var t : TList;
pCount : ^Integer;
begin
t := TList.create;
pCount := @t.Count; //取得地址?
ShowMessage(IntToStr(pCount^));
t.Count := 10000;
ShowMessage(IntToStr(pCount^));
end.
很明显,pCount成功地得到了FCount的地址。我们可以很快完成这样的一段代码来测试对FCount私有域的直接写访问:
program testFixCount;
uses classes, Dialogs, sysUtils;
var t : TList;
pCount : ^Integer;
begin
t := TList.create;
pCount := @t.Count;
pCount^ := 10;
showMessage(IntToStr(t.Count));
end.
如果域不提供公用访问接口,那么,也就无法取到它的地址。
再看源码,我们发现,在private域的定义中,FList和FCount被连续定义,从数据结构的角度来看,通常它们在内存中占用连续的空间。事实上,在Delphi中也正是如此处理的。因此,我们只需要得到FList的地址,并用“@List+SizeOf(PPointerList)”,就可以得到FCount的地址了。
这意味着,只要我们可以突破一个私有域,我们就可以通过地址计算的方法来突破全部的私有域!
JAVA
单元
测试
怎么
测试
私有
方法
如果你希望写个
单元
测试
去
测试
你写的
私有
方法
,直接使用
类
实例去调用
私有
方法
是不行的,这里推荐使用反射来访问和调用
私有
方法
。注意:示例中的
测试
方法
注意要抛异常。
单元
测试
测试
私有
方法
_我为什么不应该
测试
私有
方法
?
单元
测试
测试
私有
方法
TDD的新手问了一些有趣的
问题
,最近有人问我:
测试
私有
方法
是不好的,但是为什么呢? 我们是怎么来到这里的? 如果您要
测试
私有
方法
,那么您做错了什么。 您无法从这里进入TDD必杀技,您...
Java对
私有
方法
进行
单元
测试
及示例
在上述示例中,我们创建了一个MyClass
类
,其中有一个
私有
方法
privateMethod。首先,我们使用getDeclaredMethod
方法
获取
私有
方法
的引用,并...因此,在进行
单元
测试
时,应优先
测试
公共接口,而不是直接
测试
私有
方法
。
单元
测试
某个
类
的内部
类
或者某个
类
的
私有
方法
在进行
单元
测试
时,我们往往需要直接访问某个
类
的内部
类
或者某个
类
的
私有
方法
,此时正常的调用就无能为力了,因此我们可以使用反射进行调用。Class class = Class.forName("
类
名") 或 Class class =
类
实例.getClass...
单元
测试
如何mock当前
类
的其他
私有
方法
调用
在我们编写
单元
测试
案例的过程中,如果存在mock当前
类
内其他
私有
方法
的需求,该如何实现呢? (1)mock有返回值的
私有
方法
a.首先需要在
测试
类
上添加RunWith注解 @RunWith(PowerMockito.class) b.其次需要在...
Delphi
5,927
社区成员
262,932
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章