关于单体测试
单体测试中,考虑的都是一个public method, 根据他的输入,输出和返回值来测试。但是有很多方法显然不是这样的。
方法不是public
有些方法没有输入,或者没有输出,紧紧是改变了某些field的状态。
有些方法,紧紧是顺序的调用了其他方法
还有其他。
我想知道,单体测试,哪些方法需要测试,那些方法不需要测试?
对于每一种方法,是不是都有相应的测试方法?
--------------------编程问答-------------------- 大家都不做单体测试么? --------------------编程问答-------------------- google 里面查 NUnit --------------------编程问答-------------------- 这个东西只是个tool,没有解决我的问题呀。 --------------------编程问答-------------------- 下载个NUnit --------------------编程问答-------------------- 一般都是public方法 --------------------编程问答-------------------- 如果仅仅修改了内部的状态,那么应该努力的寻找能够确认新状态的方法来确认内部状态的改变——通常private变量会有对应的property可以查看。
另外应该不是所有的方法都需要测试,一些public或者protected的方法肯定是要测试的,但是private的可以考虑不测试。 --------------------编程问答-------------------- 单位测试。什么东东。。 --------------------编程问答-------------------- free_wang(人不为己,天诛地灭。) ( ) 信誉:96 Blog 2007-2-5 19:01:44 得分: 0
单位测试。什么东东。。
--------------------------------------------
这么认真的问题,玩笑就不要开了。 --------------------编程问答-------------------- flyforlove(为情飞) ( ) 信誉:100 Blog 2007-2-5 15:57:31 得分: 0
这个东西只是个tool,没有解决我的问题呀。
//////////////////////////////////////////////
学会怎么用了,也就解决你的问题咯。实践出知识。
--------------------编程问答-------------------- xvting(xvting) ( ) 信誉:103 Blog 2007-02-06 14:50:40 得分: 0
flyforlove(为情飞) ( ) 信誉:100 Blog 2007-2-5 15:57:31 得分: 0
这个东西只是个tool,没有解决我的问题呀。
//////////////////////////////////////////////
学会怎么用了,也就解决你的问题咯。实践出知识。
-------------------------------------------------------------
这不是等于没有说么,tool就是tool,就像你即使会使用vs,也不一定就会写程序一样。 --------------------编程问答-------------------- 你说的问题是单元测试用例覆盖率的问题,理论是应该100%的覆盖到你所有的代码,但是我们都知道这是不可能的,那在决定用单元测试之后,我们就要定一个标准,到底哪些需求进行单元测试,测到什么程度.你提到的问题我在开发中也遇到过,lextm(LeLe)说的很对,如果不能直接测试输入输出的,我们要对其影响到的变量进行一个判断. --------------------编程问答-------------------- brucenan999(布鲁斯南) ( ) 信誉:99 Blog 2007-2-6 16:55:08 得分: 0
你说的问题是单元测试用例覆盖率的问题,理论是应该100%的覆盖到你所有的代码,但是我们都知道这是不可能的,那在决定用单元测试之后,我们就要定一个标准,到底哪些需求进行单元测试,测到什么程度.你提到的问题我在开发中也遇到过,lextm(LeLe)说的很对,如果不能直接测试输入输出的,我们要对其影响到的变量进行一个判断.
------------------------------------
我赞同实际上不可能覆盖到100%,但是问题是如果一个方法影响到一个变量的话,这个变量又是内部使用的private变量,那怎么去判断?如果这个变量是个复杂的类,那么怎么去构建它?
我总觉得单体测试是面向过程编程的东西,它只能对那些有输入输出的方法有效。 --------------------编程问答-------------------- Test-Driven Development in Microsoft .NET
你可以到网上找这本书看一下,里面介绍了怎么样去写单元测试,它有很多方法去实现测试.
其实只要有时间,不管是公共的还是私有的都能拿出来,我们不是有REFLECTION嘛:)
事实上在项目过程中,我们也是要权衡的嘛,不可能面面俱到
--------------------编程问答-------------------- 在多层设计里,在最外层方法可能就是调用一个下一层的一个方法,而下一层的方法可能就会调用再下一层方法,这样在测试这个方法时还是单元测试么?这不是集成单元测试么?
还有一个方法就是使用mock,但是mock依赖于inte易做图ce呀。 --------------------编程问答-------------------- 个人认为单元测试应该覆盖所有的代码,对于私有成员,它也有私有成员的测试方法,主要是构造的测试用例够不够全。 --------------------编程问答-------------------- 不需要测试的方法:和画面有关,无法进行测试的方法。一般应该写测试书。
public protected需要测试。private方法一定在其他方法中被调用到了,所以测试其他方法的同时就能覆盖到私有方法。
对于和数据库有关的方法测试可以用dbunit,对于和接口有关可以用mock.详细请参见:http://www.blogjava.net/jinger/archive/2007/12/30/171552.html --------------------编程问答-------------------- 还有不明白的话可以发邮件给我:xiexiaojing@neusoft.com --------------------编程问答--------------------
东软的啊~ --------------------编程问答-------------------- NUnit是个什么东东 --------------------编程问答-------------------- VS2010可以测试受保护的方法。 --------------------编程问答-------------------- public 无参 无返回类型的方法
补充:.NET技术 , C#