在测试过程中发现了多少Bug?
- “未解决问题”和“热门问题”界面为空,即无法显示问题。
解决方案:
这是我们遇到的第一个问题,由于对服务器一窍不通,这个问题花费了很长时间,解决后我们也在很大程度增加了信心。(不好意思废话太多了)我们把jdbc的jar包放到tomcat的/WEB-INF/lib路径下就好了。
- 点赞数异常。每个问题有一个人已点赞,其他人便不能点赞。
解决方案:
在数据库中,有一个表Vote(int uid,int aid) (姑且用这种方式描述这个表,两个属性分别表示user_id和answer_id,每个元组表示某用户对某问题的赞),学长代码的后端逻辑是:点赞和取消赞分别再Vote表中插入和删除一个元组。点赞后,通过Vote表确定某个问题的赞数。然而,Vote表的主键是uid!!!这导致每个元组的uid不能相同,即每个问题只能有一个赞。于是果断把主键设为(uid,aid),成功!
- 如果在已点赞的情况下(当前赞数为1)采纳问题,赞数会变为0。再点“取消点赞”,赞数会变为-1!
解决方案:
为了方便,我在表Answer中增加了votes这一属性,专门查看和修改每个问题的点赞数。并在点赞和取消赞的函数中增加了修改表Answer的sql语句,问题得以解决。
- 问题的回答数、访问数始终为0
解决方案:
jdbc中有这样一个函数: ResultSet.getParameter(int index); 其中ResultSet类型的对象用来保存从数据库中得到的元组的迭代器。这个函数用来获取某个元组的第index个属性值。我们发现,我们自己构建的数据库中各个属性的先后顺序,和学长提供的后端代码中getParameter()函数获取的先后顺序不匹配,也就是我们的数据库和学长所用的有所出入。修改了属性的先后顺序后,问题得以解决。
- 查看问题详情、回答问题后,问题的访问量、回答数不能在主页及时更新。
解决方案:
这里我们了解了一下activity的生命周期。从图中可以看出,当我们从问题详情界面返回首页时,调用的是onResume()函数,而非onCreate()函数。所以我们把刷新页面的逻辑增添到onResume()函数中,问题得以解决。
- 删除回答后,主页中对应问题的replies(回答数)不会自动减一。
解决方案:
对应的后端代码中,没有修改表Question中replies属性的代码,增加了应有的代码就解决了。