数据库的增删改查用单元测试AndroidTestCase

1         importandroid.content.Context; 

2         importandroid.database.sqlite.SQLiteDatabase; 

3         importandroid.database.sqlite.SQLiteOpenHelper; 

4           

5         public classDatabaseHelper extendsSQLiteOpenHelper 

6         { 

7             //数据库名称 

8             private static final StringDB_NAME = "SQLiteDemo.db"; 

9             //数据库版本 

10          private static final intDB_VERSION = 1; 

11            

12          //表名 

13          public static final StringTABLE_NAME = "demo"; 

14            

15          private static final StringDB_CREATE = "create table " +TABLE_NAME +  "(_id integer primary key autoincrement, name varchar(20), numbervarchar(10))"; 

16        

17          publicDatabaseHelper(Context context) 

18          { 

19              super(context,DB_NAME, null,DB_VERSION); 

20                

21          } 

22            

23          /**

24           * 创建表

25           */ 

26          @Override 

27          public voidonCreate(SQLiteDatabase db) 

28          { 

29              db.execSQL(DB_CREATE); 

30        

31          } 

32        

33          /**

34           * 更新表

35           */ 

36          @Override 

37          public voidonUpgrade(SQLiteDatabase db, intoldVersion, intnewVersion) 

38          { 

39      //     db.execSQL("drop table if exists " + TABLE_NAME); 

40      //     onCreate(db); 

41        

42          } 

43        

44      } 

接着再上数据操作辅助类DatabaseServer.java

45      importandroid.content.ContentValues; 

46      importandroid.content.Context; 

47      importandroid.database.Cursor; 

48      importandroid.database.sqlite.SQLiteDatabase; 

49        

50      public classDatabaseServer 

51      { 

52          privateDatabaseHelper dbHelper; 

53        

54          publicDatabaseServer(Context context) 

55          { 

56              this.dbHelper= newDatabaseHelper(context); 

57          } 

58        

59          /**

60           * 插入数据

61           *  

62           *@param name

63           *            名字

64           *@param number

65           *            数据

66           *@return 如果成功则返回true,否则返回false

67           */ 

68          public booleaninsert(String name, String number) 

69          { 

70              //创建或打开数据库 

71              SQLiteDatabase db =dbHelper.getWritableDatabase(); 

72                

73              ContentValues cv = newContentValues(); 

74              cv.put("name",name); 

75              cv.put("number",number); 

76              //插入数据,返回插入数据ID 

77              long id =db.insert(dbHelper.TABLE_NAME, null,cv); 

78              if (id !=0) 

79              { 

80                  return true

81              } 

82        

83              return false

84          } 

85        

86          /**

87           * 更新数据

88           *  

89           *@param id

90           *            数据列_id

91           *@param number

92           *            数量

93           *@return 如果成功则返回true,否则返回false

94           */ 

95          public boolean update(int id,String number) 

96          { 

97        

98              SQLiteDatabase db =dbHelper.getWritableDatabase(); 

99                

100            //Android自带的ContetValues,类似于Map,提供了put(Stringkey, XXX value)的方法存入数据 

101            ContentValues cv = newContentValues(); 

102            cv.put("number",number); 

103              

104            //通过ContentValues更新数据表,返回更新的ID值 

105            int result =db.update(dbHelper.TABLE_NAME, cv, "_id=?", 

106                    new String[] { String.valueOf(id) }); 

107      

108            if(result != 0) 

109            {  

110                return true

111            } 

112      

113            return false

114        } 

115      

116        /**

117         * 删除数据

118         *  

119         *@param id

120         *            数据列_id

121         *@return

122         */ 

123        public boolean delete(int id) 

124        { 

125      

126            SQLiteDatabase db = dbHelper.getWritableDatabase(); 

127              

128            //删除指定ID值 

129            int result =db.delete(dbHelper.TABLE_NAME, "_id=?", 

130                    new String[] { String.valueOf(id) }); 

131      

132            if(result != 0) 

133            { 

134                return true

135            } 

136      

137            return false

138        } 

139      

140        /**

141         * 查询数据

142         *  

143         *@return 返回数据列表

144         */ 

145        public CursorfetchAll() 

146        { 

147      

148            SQLiteDatabase db =dbHelper.getReadableDatabase(); 

149            //查询数据表中所有字段 

150            Cursor cursor =db.query(dbHelper.TABLE_NAME, null, null, null, null

151                    null, "_id desc"); 

152            if(cursor != null

153            { 

154                return cursor; 

155            } 

156            return null

157      

158        } 

159    } 

这里两个类都建好了,但我们要测试一下我们建的这两个类是否工作正常,能否插入,更新,删除,查询数据,这里我们就用了TestCase来做测试

SQLiteDemoTest.java

160    importandroid.database.Cursor; 

161    importandroid.test.AndroidTestCase; 

162      

163    public classSQLiteDemoTest extendsAndroidTestCase 

164    { 

165        privateDatabaseServer dbServer; 

166          

167        /**

168         * 测试插入数据

169         */ 

170        public voidtestinsert() 

171        { 

172            dbServer = new DatabaseServer(this.getContext()); 

173            boolean flag =dbServer.insert("沙僧", "10"); 

174            System.out.println(flag); 

175        } 

176          

177        /**

178         * 测试查询数据

179         */ 

180        public voidtestfetchAll() 

181        { 

182            dbServer = new DatabaseServer(this.getContext()); 

183            Cursor cursor =dbServer.fetchAll(); 

184            while(cursor.moveToNext()) 

185            { 

186                System.out.println(cursor.getString(1)); 

187                System.out.println(cursor.getString(2)); 

188            } 

189      

190        } 

191          

192        /**

193         * 测试更新数据

194         */ 

195        public voidtestupdate() 

196        { 

197            dbServer = new DatabaseServer(this.getContext()); 

198            boolean flag =dbServer.update(1, "20"); 

199            System.out.println(flag); 

200        } 

201          

202        /**

203         * 测试删除数据

204         */ 

205        public voidtestdelete() 

206        { 

207            dbServer = new DatabaseServer(this.getContext()); 

208            boolean flag =dbServer.delete(1); 

209            System.out.println(flag); 

210        } 

211    } 

当然,别忘记了,在AndroidManifest.xml中还要加入测试库文件

212    <?xml version="1.0" encoding="utf-8"?> 

213    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 

214        package="com.kang.button_demo" android:versionCode="1" 

215        android:versionName="1.0"> 

216        <uses-sdk android:minSdkVersion="10" /> 

217      

218        <application android:icon="@drawable/icon" android:label="@string/app_name"> 

219            <uses-library android:name="android.test.runner" /> 

220            <activity android:label="@string/app_name" android:name=".SQLiteDemo"> 

221                <intent-filter> 

222                    <action android:name="android.intent.action.MAIN" /> 

223                    <category android:name="android.intent.category.LAUNCHER" /> 

224                </intent-filter> 

225            </activity> 

226      

227        </application> 

228      

229        <instrumentation android:name="android.test.InstrumentationTestRunner" 

230            android:targetPackage="com.kang.button_demo" android:label="Testsfor My App" /> 

231    </manifest> 

这里有一个<uses-library>这是测试库,必须要加入的,还有就是最后<instrumentationandroid:name="android.test.InstrumentationTestRunner"
  android:targetPackage="com.kang.button_demo"android:label="Tests for My App" />也是必须加的,这是定义测试包的,你的测试文件必须要放在根包下的,这里我的根包是com.kang.button_demo

好了,你可以运行一下,看是否是出现蓝条,而不是红条,呵呵,上图


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值