社区
C#
帖子详情
请问这种情况能做单元测试吗?
nicholasXXX
2010-05-08 01:54:34
程序是dll,要被主程序(不是我们开发的)调用采用运行
这种情况能做单元测试吗?
...全文
121
15
打赏
收藏
请问这种情况能做单元测试吗?
程序是dll,要被主程序(不是我们开发的)调用采用运行 这种情况能做单元测试吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nicholaskj
2010-05-15
打赏
举报
回复
[Quote=引用 7 楼 sp1234 的回复:]
引用 6 楼 nicholaskj 的回复:
这个够呛,单元测试的进程是有VS控制的
看不懂,这就更不知道从何谈起了。
[/Quote]
楼主说的dll依赖性问题,这个很难吧,
gnefuil
2010-05-10
打赏
举报
回复
假设你的dll还需要调用别人的dll,那么你mock一下下层要调用的dll的功能,不就可以了?
[Quote=引用 12 楼 nicholasxxx 的回复:]
引用 11 楼 sp1234 的回复:
引用楼主 nicholasxxx 的回复:
程序是dll,要被主程序(不是我们开发的)调用采用运行
这种情况能做单元测试吗?
实际上不管是你写个DLL发布给别人,还是别人写个DLL发布给你,原则都是一样的,不要经院式地纠缠于“什么叫做单元测试”这个概念。写测试目的只是为了用代码把你为什么要随后花3个小时写一片代码的心里所想的初衷用可……
[/Quote]
Taiyangchen
2010-05-10
打赏
举报
回复
测试是肯定可以测试的
用NUnit来测试,不过如果你发现Dll有问题了,那么开发组的人肯定要改dll的代码,重新生成dll,这时极有可能导致其它代码不兼容,所以你又得做回归测试了。
以专业开发人员为伍
2010-05-09
打赏
举报
回复
[Quote=引用 6 楼 nicholaskj 的回复:]
这个够呛,单元测试的进程是有VS控制的
[/Quote]
看不懂,这就更不知道从何谈起了。
nicholaskj
2010-05-09
打赏
举报
回复
这个够呛,单元测试的进程是有VS控制的
nicholasXXX
2010-05-09
打赏
举报
回复
[Quote=引用 11 楼 sp1234 的回复:]
引用楼主 nicholasxxx 的回复:
程序是dll,要被主程序(不是我们开发的)调用采用运行
这种情况能做单元测试吗?
实际上不管是你写个DLL发布给别人,还是别人写个DLL发布给你,原则都是一样的,不要经院式地纠缠于“什么叫做单元测试”这个概念。写测试目的只是为了用代码把你为什么要随后花3个小时写一片代码的心里所想的初衷用可执行的代码文档固定下来,并且每天可以重复测试1……
[/Quote]
误解我的意思了。
我的情况是,二次开发的dll,只能被主程序调用才能实现功能,并且编译的时候还要加人人家指定的几个dll,而且主程序不是我们开发的。说的简单点就是外挂,就是插件。
现在的问题来了,我想做单元测试,控制我们开发的dll功能(改动代码)能够在测试下通过再发布。
然而,目前的单元测试的形式都是独立的dll之类的形势,所以我不知道怎么搞。
以专业开发人员为伍
2010-05-09
打赏
举报
回复
[Quote=引用楼主 nicholasxxx 的回复:]
程序是dll,要被主程序(不是我们开发的)调用采用运行
这种情况能做单元测试吗?
[/Quote]
实际上不管是你写个DLL发布给别人,还是别人写个DLL发布给你,原则都是一样的,不要经院式地纠缠于“什么叫做单元测试”这个概念。写测试目的只是为了用代码把你为什么要随后花3个小时写一片代码的心里所想的初衷用可执行的代码文档固定下来,并且每天可以重复测试1000遍,即使1年之后也可以随时拿出来回归测试。当你习惯了这样写,测试代码要比空洞的设计文档来得实在。
比如你跟别人协作,那么你跟别人打成的协议、别人给你写的需求、假设你负责设计一部分业务逻辑、过去发布过的功能现在客户又有新的更改需要架构变通了........这些如果会造成你随后2、3个小时写点实现代码,那么你就可以先用测试代码写出来,然后让测试可以通过就完了。当你的测试可以跑通,就可以把你的DLL(当前版本)发布给别人使用(使用你刚刚测试通过的接口功能),随时可以发布,随时可以把测试日志截取一块并打印出来作为api调用说明。而不需要花费大量时间搞什么理论分析。
当你问“能做单元测试吗?”的时候,我发现的问题是:你对测试太胆战心惊了,而没能学着把它当作取得竞争优势的手段来使用。
以专业开发人员为伍
2010-05-09
打赏
举报
回复
当你只是关心自己为什么要写代码,而不去替别人担心,那么这个问题自然也就从来不必要提出。你只做必要的单元测试就足够了,简单来说就像我在#5楼所说的只要让你的单元测试覆盖到语句,而不是去管把别人的DLL变成白盒的。
写单元测试不要像个苍蝇一样围着已经写好的代码左思右想地去妄图搞什么条件覆盖之类的东西,你都写完了实现代码就很难真正立刻写出好的测试代码。把单元测试作为你设计的一部分、创意的一部分,先写测试后写实现代码,这才是不写无用的测试代码的真谛。
gnefuil
2010-05-09
打赏
举报
回复
单元测试一般是开发的时候写吧,因为开发者可以把大的模块分成小的,分别加以测试。
你把第三方的dll拿来对每个function进行测试,你也可以叫它单元测试,不过这种测试更大的可能是集成测试。
看你怎么定义“单元”了。
以专业开发人员为伍
2010-05-09
打赏
举报
回复
你只要关心自己为什么要写代码,在写代码之前就把为什么要写这个心理诉求用可执行的单元测试写出来。举个例子,假设有人给我一个“绣十字绣”的模块,我打算用它来把我老婆的照片秀出来,我会想出如何在程序中表达我老婆的照片,如何表达这个模块应有的输出结构,如何对比模块输出与照片的相似程度,例如我必须想一个办法用代码来测试如何验证这个模块把眼睛瞳孔生动刻画出来了,而不是简单地给模糊了.....
总之你只是关心你要用这个所谓DLL来干的
具体
事(可能一旦你炫耀空洞而宏伟的理想,就不知道眼前该如何真正去测试了),犯不上多此一举地帮别人去挑出那个所谓DLL中跟你的项目目前的需求无关的东西。
另外,当你需要访问数据库、远程服务或者很不稳定的第三方系统等等,应该自己创建Mock的接口以及Mock的数据,而往往并不使用真实的系统来测试。
以专业开发人员为伍
2010-05-08
打赏
举报
回复
[Quote=引用 3 楼 nicholasxxx 的回复:]
引用 2 楼 sp1234 的回复:
谁要做?对什么做?
如果是被强迫的,说出来谁强迫你做单元测试了呢?如果不是,那么你之前在自己的产品上做过什么覆盖程度的单元测试吗?
主要是做二次开发的dll,希望每次改动代码,能够很快暴露出问题
[/Quote]
你写了哪一行代码,就要让单元测试覆盖它(至少语句覆盖)。
所以你的问题反而让我糊涂了,你到底有什么可担忧的呢?
捷哥1999
2010-05-08
打赏
举报
回复
针对主程序中,调用此dll的方法,写测试代码,就可以了吧。
我的理解是,你希望修改这个dll,不要引起引用它的代码出现问题。如果是这样,我的思路应该可以。
nicholasXXX
2010-05-08
打赏
举报
回复
[Quote=引用 2 楼 sp1234 的回复:]
谁要做?对什么做?
如果是被强迫的,说出来谁强迫你做单元测试了呢?如果不是,那么你之前在自己的产品上做过什么覆盖程度的单元测试吗?
[/Quote]
主要是做二次开发的dll,希望每次改动代码,能够很快暴露出问题
以专业开发人员为伍
2010-05-08
打赏
举报
回复
谁要做?对什么做?
如果是被强迫的,说出来谁强迫你做单元测试了呢?如果不是,那么你之前在自己的产品上做过什么覆盖程度的单元测试吗?
Jest
单元测试
极简版
关于Jest
单元测试
是完整的前端工程化的重要组成部分; 掌握
单元测试
是构成一个合格有经验的前端开发工程师的必要条件; 掌握
单元测试
是初级码农进阶为中高级工程师的必由之路; 掌握
单元测试
是前端工程师进阶前端...
单元测试
是什么?为什么要
做
单元测试
?
背锅侠一个有个性的订阅号1.
单元测试
是什么
单元测试
是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确,通常而言,一个
单元测试
是用于判断某个特定条件(或者场景)...
如何理解
单元测试
?它与集成测试的区别?
一、如何定义
单元测试
? 二、优秀
单元测试
的特点 三、
单元测试
与集成测试的区别 一、如何定义
单元测试
? 初步定义:一个
单元测试
是一段代码,这段代码调用一个工作单元,并检查该工作单元的一个具体的最终结果...
单元测试
由谁 软件测试,
单元测试
由谁来
做
最合适?
单元测试
由谁来
做
最合适?
单元测试
的概念是什么?该由谁来
做
?这个问题在面试过程中不知道你有没有遇到过,反正我遇到过。看似简单的问题,一旦被问起,多半人会头大,会想当然。为什么要
做
单元测试
单元测试
保证局部...
C#
110,580
社区成员
642,559
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章