新足迹

 找回密码
 注册

精华好帖回顾

· E&E -- 时令果蔬总动员 -- 橙香烤肋排 & 炸双花 (2011-8-23) 闲夏采薇 · 黑白. 胶片. 朋友. 亲人 (2013-11-17) autrant
· 终于做成比较成功的虎皮白雪蛋糕卷 (2008-3-31) 江南小茶 · 感恩节之夏威夷游记 (2011-12-9) fingerprint
Advertisement
Advertisement
查看: 1594|回复: 22

[IT] Unit Test Framework 讨论 [复制链接]

2010年度奖章获得者

发表于 2010-3-29 22:08 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
开个贴讨论Unit Test.

大家说一说Unit Test 的心得体会, 用的什么framework

Let me explain myself better, I guess what I really want to discuss is Mock VS Non-Mock tests
There always been a debat between these two, both has pros and cons.

so questions are.

1. Are you using Mock framework in your tests? if you do, use some simple demo code to illustrate how you do it.

2. Not a fan of mock? then tell us the why you don't like it?

[ 本帖最后由 dalaohu 于 2010-3-30 10:58 编辑 ]
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2010-3-29 22:57 |显示全部楼层
此文章由 kane2001 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kane2001 所有!转贴必须注明作者、出处和本声明,并保持内容完整
有人用过white 吗

2010年度奖章获得者

发表于 2010-3-29 23:15 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
没听说过。

talk is cheap, show us some code

2010年度奖章获得者

发表于 2010-3-29 23:42 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Lets focus on the tests we do everyday. disscuss Pros cons.

Let's try to avoid asking "have you heard of xxx test framework?"

发表于 2010-3-30 00:01 |显示全部楼层
此文章由 中间人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 中间人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
unit test 用 VSTS + Moq,这是我用的。load test 和 integration test 都是团队自己写的。

发表于 2010-3-30 09:44 |显示全部楼层
此文章由 IsDonIsGood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 IsDonIsGood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
正在学习Nunit,公司的vs2005 pro没有包含unit test template.
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2010-3-30 10:28 |显示全部楼层
此文章由 wtf 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 wtf 所有!转贴必须注明作者、出处和本声明,并保持内容完整
JUnit用了七八年了。。。。

发表于 2010-3-30 10:53 |显示全部楼层
此文章由 righttang 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 righttang 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我的unit test永远都是manual.....

2010年度奖章获得者

发表于 2010-3-30 10:58 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Let me explain myself better, I guess what I really want to discuss is Mock VS Non-Mock tests
There always been a debat between these two, both has pros and cons.

so questions are.

1. Are you using Mock framework in your tests? if you do, use some simple demo code to illustrate how you do it.

2. Not a fan of mock? then tell us the why you don't like it?

发表于 2010-3-30 10:59 |显示全部楼层
此文章由 maoyu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 maoyu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 righttang 于 2010-3-30 10:53 发表
我的unit test永远都是manual.....


me 兔
半醉半醒日复日,花开花落年复年

发表于 2010-3-30 11:00 |显示全部楼层
此文章由 IsDonIsGood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 IsDonIsGood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Hi brother, I don't even know mock test.-_-||| can you give some general introductions. so bothered with unti testing coz I m really a newbie on it. thanks
Advertisement
Advertisement

发表于 2010-3-30 11:47 |显示全部楼层
此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Hi, dalaohu:

  I only use non-mock framework and have no experience in mock ones our unit testings need to test against data layer as well.

  Can you shed some light on the comparison first? This may create a base for discussion

发表于 2010-3-30 12:22 |显示全部楼层
此文章由 中间人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 中间人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不是很理解dalaohu说的non-mock是什么?Mock只是为了避免integrating test而已。

12楼说的 testings need to test against data layer 这是典型的integrating test了(除非只是从事DL这一层的开发,或者BL跟DL联系很紧密的开发),已不能算单元测试的范畴,特别是TDD开发。

[ 本帖最后由 中间人 于 2010-3-30 12:29 编辑 ]

2010年度奖章获得者

发表于 2010-3-30 12:35 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
MiddleMan sums it up well.

There are unit test, integration test and functional test

will clarify later.

发表于 2010-3-30 12:35 |显示全部楼层

回复 13# 的帖子

此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我们Layer之间没有分的这么细,所以Test的时候直接把Data也测试了。

发表于 2010-3-30 12:45 |显示全部楼层
此文章由 中间人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 中间人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 flyspirit 于 2010-3-30 12:35 发表
我们Layer之间没有分的这么细,所以Test的时候直接把Data也测试了。


理解。
Mock它带来的最大好处对我来说是单元测试的可重复性,以及可重用性。如果测试代码依赖于数据库里的数据,那么当数据库数据改变了或者数据库短时间不可用的时候,单元测试就很可能无法通过或者无法进行了。

我倒想问问有没有同学在做TDD方式的开发,想知道它会不会很慢,或者造成太频繁的refactoring。
Advertisement
Advertisement

2010年度奖章获得者

发表于 2010-3-30 13:57 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 中间人 于 2010-3-30 12:45 发表


理解。
Mock它带来的最大好处对我来说是单元测试的可重复性,以及可重用性。如果测试代码依赖于数据库里的数据,那么当数据库数据改变了或者数据库短时间不可用的时候,单元测试就很可能无法通过或者无法进行了 ...


I don't know any places is doing TDD. not even microfot themselves.
once I worked on a project with microsoft, the goal is to keep the code coverage up to 75% which is very challenge for a big project.
you just spend too much time on tests.

发表于 2010-3-30 14:21 |显示全部楼层

回复 16# 的帖子

此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我们的情况有些不同。Data都是测试Data, 是在测试初始化时生成。每个测试还是可以独立运行,所以还应该算是单元测试范畴。

发表于 2010-3-30 14:44 |显示全部楼层
此文章由 中间人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 中间人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我们的情况有些不同。Data都是测试Data, 是在测试初始化时生成。每个测试还是可以独立运行,所以还应该算是单元测试范畴。


介绍点经验吧,怎么初始化测试数据。是按照不同的场景和测试用例一次性构建好所有测试数据吗?如果是这样,怎么通知测试代码数据库中的哪些数据是用于本次测试的呢?

发表于 2010-3-30 15:00 |显示全部楼层

回复 19# 的帖子

此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我们系统中数据关系比较紧密,所以一次性初始化所有数据,在Test Class Initialization 中完成。

测试数据ID都在指定RANGE,和实际数据不冲突。

设置开关来根据情况决定是否初始化数据。

发表于 2010-3-30 15:03 |显示全部楼层
此文章由 xji 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 xji 所有!转贴必须注明作者、出处和本声明,并保持内容完整
I use RSpec test in RoR, along with DB imgration, test is never easier.
Advertisement
Advertisement

2010年度奖章获得者

发表于 2010-3-30 22:08 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不得不从他的定义说起。 如果你不知道unit test 的定义,你怎么去做呢?

unit testing by definition only tests the functionality of the units themselves. Therefore, it will not catch integration errors or broader system-level errors (such as functions performed across multiple units, or non-functional test areas such as performance). Unit testing must be done in conjunction with other software testing activities. Like all forms of software testing, unit tests can only show the presence of errors; they cannot show the absence of errors.

Software testing is a combinatorial problem. For example, every boolean decision statement requires at least two tests: one with an outcome of "true" and one with an outcome of "false". As a result, for every line of code written, programmers often need 3 to 5 lines of test code.[3] This obviously takes time and its investment may not be worth the effort. There are also many problems that cannot easily be tested at all— for example those that are nondeterministic or involve multiple threads. In addition, writing code for a unit test is as likely to be at least as buggy as the code it is testing. Fred Brooks in The Mythical Man-Month quotes: never take two chronometers to sea. Always take one or three. Meaning, if two chronometers contradict, how do you know which one is correct?

发表于 2010-4-2 18:24 |显示全部楼层
此文章由 starchu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 starchu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Java的测试框架一般是Junit, 和 TestNG, Java用Mock的话,可以使用EasyMock, JMock都可以,我一般用EasyMock, Java还有很多其他的测试工具,测试数据可以尝试dbunit, 测试网络相关的可以用httpunit, 测试XML相关的可以用xmlunit, 测试orm hibernate相关可以使用ormunit另外spring提供了很好的测试框架代码,可以用于测试有关spring开发的项目。使用Mock当让比non-mock好,流程,代码都可以不用自己用手写,就可以控制

.NET我一般用NUnit和Moq。

不管是不是TDD, 任何项目开发都需要做好test, 另外开发的项目最好能够加入continuous integration tool, 特别是多人开发,推荐cruisecontrol, 免费。

推荐一本很好的关于unit test的书,
The Art of Unit Testing, 有Java和.NET两个版本,大家有兴趣可以看看。

[ 本帖最后由 starchu 于 2010-4-2 18:29 编辑 ]

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部