- 浏览: 119350 次
- 来自: ...
文章分类
最新评论
预处理的接入点
-
构建脚本中的宏定义可以控制将文本解释为真正的实现还是假的实现
-
构建脚本中的头文件搜索路径可被用来控制接入真正的声明还是假的声明
-
头文件中的防卫宏可被用来接入假的声明以遮挡真正的声明被包含进来
上面第二点通常要求提供同名的头文件, 而使用不同的构建设置
而第三点不要求同名, 只要使用相同的防卫宏, 并保证把包含替代声明的头文件放在真正的头文件前面包含进来就可以, 使用同一构建设置即可
编译链接的接入点
-
构建脚本中的库搜索路径可被用来控制接入真正的实现还是假的实现
-
针对接口编程, 可以控制接入真正的实现还是假的实现
-
与针对接口编程类似, 使用函数指针/函数对象等封装函数, 可以接入假的实现
-
使用函数封装数据访问, static访问, new 操作符, 可以子类化以接入假的实现
-
改造为模板, 可以传入不同的模板实参来控制接入真正的实现还是假的实现
-
利用名称作用范围, 同名局部变量可遮挡其它名字等, 来控制接入真正的实现还是假的实现
-
利用对象的内存布局, 直接将某几个假的函数地址组成的 vtable, 强转为被测类型
运行时的接入点
-
解释型动态语言, 直接在测试前重定义
-
编译型静态语言, 运行时修改函数地址
基本上两个原则
-
寻找, 引入, 利用一切可能的接入点
-
在一切依赖具体实现的地方, 插入一层间接
例子: 测试使用了 static 函数, new 操作符的客户代码
在 TDD 流行之后, 关于 Singleton, static 函数, new 操作符等依赖具体实现的代码被推荐避免使用. 遗留系统中则不可避免的保留着. 它们被批评的原因是使它们的客户代码难以测试. 我们可以利用 "使用函数封装数据访问, static访问, new 操作符, 可以子类化以接入假的实现" 来进行测试.
public class SingletonClient {
public void doSomething(){
SingletonObject service = SingletonObject.instance();
service.execute();
}
}
上面的这个SingletonClient的doSomething是无法测试的, 因为引用了一个静态函数. 可以把对静态函数的引用抽取到一个可覆写的函数中来引入接入点:
class SingletonClient {
public void doSomething(){
SingletonObject service = getServiceObject();
service.execute();
}
protected SingletonObject getServiceObject() {
return SingletonObject.instance();
}
}
这样测试时我们便可以子类化SingletonClient, 只重写getServiceObject, 便可以针对这个子类进行测试, 效果与针对基类测试是一样的(因为其它的函数实现都相同, 只是依赖的第三方对象被替换为了假的实现):
class SingletonClientInTestEnvironment extends SingletonClient {
protected SingletonObject getServiceObject() {
return new SingletonObjectStub();
}
}
例子: C++ 测试, 用遮盖技术(定义同名服务类), 当同时需要测真正的服务类本身时如何解决链接问题? (重定义)
那就不要定义同名的类, #define 一个宏加一层间接, 恰当的时候 #undef. 如果是函数, 可以定义一个函数对象来封装想假冒的函数, 生成该函数对象类型的一个变量时, 使用与函数相同的名字, 利用名字的作用域规则来遮盖原来的函数.
发表评论
-
The Object Primer
2004-12-11 11:21 5951,书名 被翻译成“ ... -
错误处理规范
2004-12-11 16:47 760错误处理规范 〇、概念澄清 概念 解释 错误 ... -
Java,误解为何如此之深
2005-08-24 13:50 596前几天被电话面试,问J ... -
Java:画蛇添足的编码规范
2005-09-02 13:13 623前几天公司培训编码规范: 第n条: ... -
synchronized : 规则, 推论与实践
2007-07-23 22:32 47214.3.Synchronization. Rule ... -
交互设计: 股市帮凶
2008-05-04 21:30 648同事 Y 在线操作股票时, 把"买入"点成 ... -
交互设计: 火车上的厕所
2008-05-26 17:17 613有人在动车组的厕所前等了很久, 直到乘务员路过说厕所是被锁住了 ... -
设计原则与模式: 案例介绍--CppUnit
2008-06-01 20:15 634设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 678关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 714交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 614整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
Beyond Workflow : An Introduction to Vitria BusinessWare
2005-09-26 10:13 807一、简介 Busines ... -
Vitria BusinessWare: 存储与访问安全
2006-03-26 15:45 754事实上,BusinessWare使用LDAP做为存储机制和 ... -
Vitria BusinessWare: 平台与软件总线
2006-04-01 12:59 853经过一段时间的使用 ... -
Vitria BusinessWare: Web Services
2006-04-01 14:30 744BusinessWare的Web Services ... -
Web Services:自洽,编码,交换模型
2006-04-01 16:02 6881, 自洽 以前曾经写过: 目前WebServi ... -
Web Services:WSDL 1.1 规范中的几个错误
2006-04-01 16:40 729读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个 ... -
C++/CLI:被忽视的集成技术
2006-05-17 20:02 760十几行代码,就使一个重要的旧系统组件,完全融入了基于.Ne ... -
AJP/JK:异构Web平台的集成技术
2006-05-25 21:44 712Tomcat Connector 可以将Tomcat ... -
Vitria BusinessWare: 事件与端口
2006-05-27 17:24 676Event BusinessWare是一个事件驱动的系统 ...
相关推荐
新闻延伸中提到的案例,如艺术家史国良作品的伪造事件,揭示了艺术品市场的欺诈行为,强调了艺术品鉴定的困难以及打击假冒艺术品的重要性。这些事件提醒我们,规范艺术品市场不仅需要法律制度的完善,还需要提高公众...
总的来说,这个艺术品智能鉴定系统综合运用了硬件设备、通信技术、图像处理和模式识别等多方面知识,通过科学的方法解决了艺术品鉴定难题,对于提升艺术品市场的诚信度和打击假冒行为具有重要意义。
同时,他们还将针对市场假冒伪劣产品的严峻问题,共同商讨应对策略。此外,新产品研发的方向和策略也将成为讨论的热点,以期推动家具行业的创新与发展。 制造商与经销商茶话会,为家具行业的上下游企业搭建了一个...
每一条关于唐陵雕塑的数据更新都会被打上时间戳,形成不可篡改的历史记录,这对于鉴别艺术品的真伪和传承历史脉络至关重要,有助于打击假冒伪劣,保护文化遗产的尊严。 此外,区块链的共识机制可以促进多方面的合作...
在这一背景下,一种新型的防伪技术——含有彩色艺术水印效果的可机读防伪纸应运而生。它不仅在视觉效果上具有艺术美感,还能够通过现代化的机器设备进行快速准确的识别,为防伪领域带来了革命性的变革。 水印技术...
问题在于该角色可以向您出售假冒的艺术品,因此您必须小心。 在“ ,您可以找到艺术品的列表,其中包含这些艺术品的真实版本和虚假版本之间的差异。 该项目实质上是本文提供的数据的搜索引擎。 当地发展 该应用...
4. **资源分享**:nihon 可能会提供动漫壁纸、角色艺术图等资源下载,这些页面的设计也需要CSS来确保内容的清晰展示和下载按钮的突出。 5. **活动和竞赛**:网站可能会举办线上活动或竞赛,如Cosplay比赛或动漫知识...
总的来说,"基于图像识别和NFC的字画防伪识别系统"是科技与艺术的完美结合,它利用先进的技术手段来保护传统文化的遗产,打击艺术品市场的假冒行为。随着技术的进步,我们有理由相信,未来的防伪手段将更加智能,...
书画作品的保真鉴定是确保艺术品市场公正交易的基础,防止假冒伪劣作品流入市场,保护艺术家的权益,同时也是收藏家、投资者确定作品价值的重要依据。鉴定的准确性对于维护艺术市场的健康发展具有不可忽视的作用。 ...
音乐电视作为外来艺术形式在中国找到了一条本土化发展的成功路径,既体现了外来艺术的吸收,也展现了中国文化的创新与发展。 11. 可持续发展:可再生资源的利用。市场上很多汽车大量使用可再生物质,而在时尚界,如...
1. 防伪标识:由于全息图像的独特性和难以复制性,局部全息卡纸常被用于制作防伪标签,广泛应用于药品、化妆品、奢侈品等领域,防止假冒伪劣产品。 2. 包装设计:局部全息卡纸可提升商品包装的视觉冲击力,吸引消费...
通过举办雕刻大赛,提升行业影响力,吸引更多的参与者,并规范玉石原料市场,打击假冒伪劣,保护消费者权益。 最后,鼓励玉雕师创新精神的培养至关重要。举办文化研修班,让玉雕师有机会学习和融入更多传统文化,...
特别是在铅笔制造业中,防伪技术的引入不仅保护了企业的品牌权益,而且有效地阻止了假冒伪劣产品对市场的侵害。本文将深入探讨防伪铅笔芯及含有该铅笔芯的铅笔这一创新技术,分析其在提升产品安全性与唯一性方面的...
同时,他对原则问题立场坚定,对于假冒他的书法和欺诈行为,他坚决反对并采取了严厉的措施,表现出他的正直和不容侵犯的尊严。 启功先生的一生,无论是学术上的成就,还是他的人生态度,都为我们树立了一个大写的...
以金庸的小说为例,虽然“粉丝”可能对假冒的金庸作品进行鉴别和淘汰,他们的鉴赏方式可能更加主观和情感化,而“知音”则更可能理性地挖掘作品的深层含义,批评时注重分析和逻辑。这种区分在一定程度上反映了不同...
一旦发现非法复制或假冒的二维码,系统可以迅速识别并报警,有效保护艺术品的合法权益。 在实际应用中,这种方法可以应用于各种场合,如美术馆、博物馆、私人收藏、拍卖行等。对于美术馆而言,游客可以通过扫描...
然而,市场在过去十年间经历了野蛮式增长,导致资源过度开发、欺诈行为频发、假冒伪劣商品充斥,消费者的鉴赏能力和理性消费意识亟待提高。 2. 用户定位 主要目标用户群体为对文玩有独特兴趣和鉴赏力的人群,尤其是...
4. 特殊行业:如烟草、贵重艺术品等,防伪纸箱是防止非法交易的重要手段。 四、未来发展趋势 随着科技的发展,防伪技术也将持续升级。未来的防伪纸箱可能会融入更多的智能元素,如物联网技术、区块链技术,实现...
如何在保障设计师权益的同时,防止假冒伪劣产品的出现,是传媒行业需要关注的问题。这也意味着,传媒机构在报道潮玩市场动态的同时,也要承担起普及版权知识,提高公众版权意识的责任。 总之,“传媒:潮玩大众化或...
总的来说,防伪包装盒的开发与设计是结合艺术、科技与策略的综合过程。它不仅是保护品牌的工具,也是提升消费者信心、打击假冒市场的重要手段。对于外包设计公司来说,理解客户的需求,掌握最新的防伪技术,并将其...