个人完成案例之乐学成语(测试篇)
本期我们要编写一个功能较为完整的成语学习软件,在编写之前,我们先对这个项目进行功能需求及技术可行性分析。
一、需求分析(项目实现的功能):
二、技术可行性分析:
聚合网上给我们提供了免费的数据,在这些数据中包括每个成语的读音、解释、近义词反义词等信息。
大家也可以参考在线成语。
除上述方法外,网上也可以找到较全的成语数据库。
解决了成语的来源这个问题,技术上又是完全可行的,接下来我们就可以开始编码了。
一、首先我们在eclipse中新建一个Android项目并将其命名为HappyIdiom,包名叫做cn.edu.bztc.happyidiom,如图所示。
二、为了让项目能够有更好的结构,这里需要在com.edu.bztc.happyidiom包下再新建几个包,如图所示。
三、把已有的数据库idioms传入Android数据库中:在res目录下新建raw目录,把数据库idioms.db复制到此目录下,然后在db包下新建一个DBOpenHelper类,代码如下;
四、修改AndroidManifest.xml搭建单元测试环境,测试数据库是否导入到指定的目录下。修改后的文件如下(加粗黑色代码为主要修改内容,以下相同):
五、在test包下新建DBOpenHelperTest测试文件继承AndroidTestCase,代码如下:
右击DBOpenHelperTest文件->Run as->Android JUnit Test进行单元测试,测试结果如下:
出现这个运行效果说明数据库已经复制成功,切换到DDMS,我们发现在data/data应用包下成功创建了数据库。
六、获取所有的动物类成语。
1.在entity包下新建一个Animal类,代码如下:
2.在dao包中新建一个AnimalDao类,代码如下:
3.在test包下新建一个AnimalDaoTest进行测试,代码如下:
运行效果如下:
如果程序正常运行的话会出现上述效果,然而在运行过程中不可能一帆风顺,大家在运行的过程中总会遇到这样或那样的问题导致程序不能正常运行。所以,我在这里谈一下我在运行程序的过程中遇到的一个问题及解决方法。
错误信息:By Log Tag: CursorWindow
By Log Message: Failed to read row 0, column -1 from a CursorWindow which has 278 rows, 8 columns.
无法从CursorWindow 中读取0行-1列问题解决方法:找到AnimalDao类,查看调用的Animal类的列名是否正确。我是在animal.setPronounce(cursor.getString(cursor.getColumnIndex("pronounce")));这条代码中pronounce列名拼写错误,在系统中无法找到这一列,因此程序运行错误,改正后程序就能正确运行了。