|
1测试积点
本帖最后由 marcus1877 于 2013-7-30 09:28 编辑
公司开始准备上UT测试,但是测试与开发都没经验。我与另一个developer engineer结对写UT,他进入公司前接触过,但是他的经验有限,无法从我的角度考虑UT,也不知道怎么指导我。
我的知识水平也就把【.NET单元测试艺术】(Roy Osherove)这本书看了一遍,所以这次有很多疑问,想问问资深的UT人员。
先写一个基础问题,如何写下面代码的UT
开发工具、环境:VS2012 ultimate,c#,Win8,Windows Store APP
源码类类似:
Class DataShare:IDataShare
{
bool Disposed; //这里是private的field,而且没有对应的property
Manager Manager=null; //这里是private的field,而且没有对应的property
public pubMethod1(IEnumerable<StorageFile> files) //IEnumerable是系统的,StorageFile也是系统内置
{
if (Disposed)
{
Logger.log("error","");
throw new objectException();
}
if (files !=null && files.count()>0)
{
flag=true;
Manager.StartFiles(files);
}else
{
flag=false;
}
return flag;
}
.........其他代码略.....
} //Class 结束
Class Manager
{
internal async void StartFiles(IEnumerable<StorageFile> files)
{
................
}
}
我的第一个问题是:
这里Manager是一个private field,无法设置,如果要做真正的UT,我个人认为必须把它变成internal的(或增加对应internal的属性),同时要把它的interface都抽取出来,这样我才能自己做一个stub对象,完成UT??
第二个问题是 :
StartFiles被开发人员定义为一个internal的method,那要为了做DataShare的UT,就必须把它改成Public的??这样extract interface后我的stub对象就会有startFiles方法了。
如果开发人员不把它抽取接口,那我就写不出完整的stub类了,因为不包含这个StartFiles方法!!!!!
如果要改public,那么开发人员用什么原则确保哪些method该改成public,哪些可以保持internal? |
|