写了个单元测试辅助类,用于读取文本加入数据,删除数据和检查数据的

下面是数据文本文件的格式

“#”号是注释

“T:”是加入

“D:”是删除表里面的数据

“C:”是检查数据

数据与数据之间用TAB隔开(可以从企业管理器直接把数据拷贝出来作为数据源)

加入数据的事列如下:

#插入用户表

null为插入空

T:Users
John

  1<tab>John chan   
  2Cake<tab>Cake.lu   
  3jeff<tab>jeff.hu 
  4
  5# CheckTable's Data   
  6#null为检查是否为空,skip掉过不检查,notnull检查他是否不为空   
  7C:Users   
  8John <tab>John chan   
  9Cake<tab>Cake.lu   
 10jeff<tab>jeff.hu 
 11
 12#Delete All Data   
 13D:TAbleName 
 14
 15调用代码:   
 16参数1:文本文件的路径   
 17参数2:是Helper里面的两个常量(其实可以是个Enum,不过写的时候没有注意)   
 18Helper.ExecuteAction("Data.txt",Helper.INSERT); 
 19
 20参数3:是指定对那个对象操作(T:D:C:后面的名称,如T:Users,那么就填Users)   
 21Helper.ExecuteACtion("Data.txt",Helper.Insert,"Users") 
 22
 23代码如下: 
 24
 25using System;   
 26using System.Data;   
 27using System.IO;   
 28using System.Data.SqlClient;   
 29using Microsoft.ApplicationBlocks.Data;   
 30using NUnit.Framework; 
 31
 32namespace TestCore   
 33{   
 34  
 35public class Helper   
 36{   
 37public const string DELETE="D";   
 38public const string INSERT="T";   
 39public const string CHECK="C";   
 40public const string ANNOTATE="#";   
 41  
 42public static string ConnectionString   
 43{   
 44//这里要写返回的连接字符串   
 45get{return null;}   
 46}   
 47public static void ExecuteAction(string path,string action)   
 48{   
 49ExecuteAction(path,action,null);   
 50}   
 51  
 52public static void ExecuteAction(string path,string action,string inputTable)   
 53{   
 54Console.WriteLine("----------------"+action+" action is Start--------------------");   
 55  
 56StreamReader reader=new StreamReader(path);   
 57string line;   
 58string table=null;   
 59try   
 60{   
 61while(true)   
 62{   
 63line =reader.ReadLine();   
 64if(line==null)   
 65break;   
 66  
 67if(line.Length==0)   
 68continue;   
 69string Key=line.Substring(0,1);   
 70if(Key==action)   
 71{   
 72table=line.Substring(2);   
 73if(action==DELETE)   
 74{   
 75if(CheckTable(inputTable,table))   
 76{   
 77Delete(table);   
 78}   
 79table=null;   
 80}   
 81else   
 82{   
 83continue;   
 84}   
 85}   
 86else if(table!=null)   
 87{   
 88switch(action)   
 89{   
 90case INSERT:   
 91if(CheckTable(inputTable,table))   
 92{   
 93string[] datas=line.Split('\t');   
 94AddData(datas,table);   
 95}   
 96break;   
 97case CHECK:   
 98if(CheckTable(inputTable,table))   
 99{   
100string[] checkDatas=line.Split('\t');   
101Check(checkDatas,table);   
102  
103}   
104break;   
105}   
106table =null;   
107}   
108else   
109{   
110continue;   
111}   
112}   
113}   
114finally   
115{   
116Console.WriteLine("----------------"+action+" action is End--------------------");   
117reader.Close();   
118}   
119}   
120private static bool CheckTable(string inputTable,string SettingTable)   
121{   
122if(inputTable==null)   
123return true;   
124return (inputTable==SettingTable);   
125}   
126  
127private static void Delete(string table)   
128{   
129string sql=" delete from "+table;   
130Console.WriteLine(sql);   
131try   
132{   
133SqlHelper.ExecuteNonQuery(ConnectionString,CommandType.Text,sql);   
134}   
135catch(Exception e)   
136{   
137throw new ApplicationException("删除错误:Sql是"+sql,e);   
138}   
139}   
140private static void AddData(string[] data,string table)   
141{   
142SqlConnection conn=new SqlConnection(ConnectionString);   
143string sql="insert into "+table+" values ";   
144string temp="('"+data[0]+"'";   
145for(int i=1;i<data.length;i++) )="" +data[i]+"'";="" +table;="" ,but="" ;="" actualy");="" applicationexception(table+":"+sql,e);="" argumentoutofrangeexception(="" assert.isfalse(dr[i].equals(dbnull.value),"expect="" assert.istrue(dr[i].equals(dbnull.value),"expect="" but="" catch(exception="" check(string[]="" comm="new" comm.executenonquery();="" conn.close();="" conn.open();="" console.writeline(sql);="" continue;="" data,string="" dataset="" datatable="" dr="" ds="SqlHelper.ExecuteDataset(Helper.ConnectionString,CommandType.Text,sql);" dt="ds.Tables[0];" dt.rows)="" e)="" else="" finally="" for(int="" foreach(datarow="" i="0;i&lt;data.Length;i++)" if(data[i]!="null" if(data[i].length="" if(data[i].tolower()="notnull" if(dt.rows.count="0)" in="" is="" isn't="" it's="" new="" not="" null="" private="" sql="select * from " sql+='temp+")";' sql+"="" sqlcommand="" sqlcommand(sql,conn);="" static="" string="" table)="" temp+=",null" throw="" try="" void="" {="" }="" 返回结构为空");="">=4 &amp;&amp; data[i].Substring(0,4).ToLower()=="not:")   
146{   
147string txtValue=data[i].Substring(4).ToLower().Trim();   
148string dbValue=dr[i].ToString().ToLower().Trim();   
149Assert.IsTrue(txtValue!=dbValue,"db value is the same as data in text file,text file value is "+txtValue);   
150continue;   
151} 
152
153if(dr[i].ToString().Length!=0 || dr[i].Equals(DBNull.Value))   
154{   
155Assert.IsTrue(dr[i].ToString()==data[i],table+":Check Value Is "+data[i]+",but DB is "+dr[i]);   
156continue;   
157}   
158}   
159}   
160}   
161}   
162}</data.length;i++)></tab></tab></tab></tab></tab></tab>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus