首页新闻找找看学习计划

请问静态的需要访问数据库的方法如何做单元测试?另外,什么样的方法需要做单元测试?

0
悬赏园豆:30 [已解决问题] 解决于 2017-06-16 13:22

我目前做的一个项目是 asp.net mvc的 ORM用的是EF 那么想问各位大神这样一个项目中哪些方法会需要做单元测试呢

目前这个项目有一个类中有大量静态查询数据库的方法,那么要如何针对这些方法写单元测试呢? 我在网上查了一下说静态方法要写一个包装类去测试,而单元测试一般不涉及访问数据库,那么这种方法要怎么测试才好呢?还是说这个项目架构本身有问题吗?
本人以前没写过 这是第一次写单元测试 希望各位能说的浅显点 。

Sugar★的主页 Sugar★ | 菜鸟二级 | 园豆:203
提问于:2017-06-13 23:09
< >
分享
最佳答案
0

既然你是要访问数据库,那就绕不开数据库。拷贝一个数据库副本保存备用,然后测试,将这个副本附加到数据库中,然后访问这个副本进行测试。

收获园豆:30
幻天芒 | 高人七级 |园豆:36522 | 2017-06-14 08:57

你是说在数据库中自己设定一个假数据让这个方法查,看看查出来是不是自己设定的数据是吗

Sugar★ | 园豆:203 (菜鸟二级) | 2017-06-14 14:59
其他回答(1)
0

看这描述,你压根还不知道啥是单元测试,建议还是先买本单元测试的书好好看看。

爱编程的大叔 | 园豆:29818 (高人七级) | 2017-06-14 11:45

确实不太懂,网上也查了一下相关资料,我目前的理解就是只知道这是测试一个方法逻辑有没有问题的测试,比如简单的计算一个乘法的方法,然后我随便弄2个数进去看看是不是计算出我要的结果,但是对于无返回的方法我就不知道测试的目的是什么了。而且我现在的情况是有一个Controller里面的一个Action调用到了一个静态方法,而且这个静态方法是要访问数据库的,但是一般来说单元测试是不会访问数据库的,都是Mock一个假的对象去测试,而且从数据库读取出来的结果是放到ViewBag中的,像这样的方法需要测试吗,测试的目的又是什么呢? 还有就是一个项目中的任何一个方法都有必要进行测试吗(包括构造函数,静态构造函数),还是说只要对一些底层的有逻辑代码的方法需要测试呢 ?

支持(0) 反对(0) Sugar★ | 园豆:203 (菜鸟二级) | 2017-06-14 14:55

@Sugar★: 孔子说过, no silver bullet!

你是把单元测试和测试混淆了。

重点是单元,理解这两个字。

简单说就是,测试一个不依赖于外界变化的方法是否能够正常,按照预计设计的特性运行。

所以,数据库啥的,都是浮云。

单元测试不是集成测试,单元测试就是单元测试,他不能用来解决你所有的问题。

例如:

你写一个函数,实现加法 Add(a,b),返回结果。

那么单元测试可能有:

1、测试传入非数字,或者空,比如 Add(null, null)

2、测试基本的加法,比如Add(2,3),应该返回5

3、测试超出计算范围的,比如Add(2000000000,2000000000)

4、输入不超过范围,结果超出范围的。

来保证你这个函数的鲁棒性。(不知道鲁棒性可以自行google)

算了,你还是看书吧。

支持(0) 反对(0) 爱编程的大叔 | 园豆:29818 (高人七级) | 2017-06-14 15:08

@爱编程的大叔: 你说的这些我在网上查相关资料的时候我都看过了,能回答一下我刚才回复的那段话中加粗字体的问题吗

支持(0) 反对(0) Sugar★ | 园豆:203 (菜鸟二级) | 2017-06-14 15:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册