51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4308|回复: 3
打印 上一主题 下一主题

[原创] 急!!!!一个数据库测试的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-3-17 12:10:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
急!!!!一个数据库测试的问题

我的测试原代码如下:
package test;

import junit.framework.*;
import com.user.admin.*;//UserBean所在包
import junit.framework.Test;
import dao.IDao;


public class TestUserBean extends TestCase{
        private UserBean testUser;         用户组件
        private IDao dao;
        public TestUserBean(String name){
                super(name);               
        }
        protected void setUp(){
                testUser=new UserBean();
                testUser.setUserName( "s"  );    设置用户名
               dao = new dao.factory.DaoFacatory().getDao("Oracle"  );     连接并初始化数据库
                dao.initDao();
                }
        
        public static Test suite(){
                TestSuite suite=new TestSuite();
                suite.addTest(new TestUserBean("testAddUser" ){
                        protected void runTest(){
                                testAddUser();}
                        });
                return suite;
        }
        public void testAddUser(){
                dao.addUser();
                assertEquals("admin",(dao.getUser(testUser)).getUserName());
        }
}
我用的是ibatis 连接的数据库 ,这里的dao.getUser(testUser)是可以取到数据库user的内容,可是却无法测试testUI.addUser()这个方法,好象根本没调用这个方法,请大家帮我看一下测试写的对不对,而且我保证我的addUser()方法绝对是对的,因为我已经用过。我在这里只想用它来检验我的测试写的对不对。因为我以前还没有用过junit写测试代码,大家帮帮忙吧

junit 错误提示如下:
java.lang.NullPointerException

console 控制台里面的错误代码如下:
log4j:WARN No appenders could be found for logger (com.ibatis.common.jdbc.SimpleDataSource).
log4j:WARN Please initialize the log4j system properly.

[ 本帖最后由 junit 于 2006-3-17 15:44 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2006-3-21 10:55:16 | 只看该作者

我找到了答案了,原来是我的一个小小的失误

我找到了答案了,原来是我的一个小小的失误,可是 我却为它苦恼了好几天。sdlkfjsdlkfj
在初始化用户时我忘了设置密码了:
protected void setUp(){
                testUser=new UserBean();
                testUser.setUserName( "s"  );    设置用户名
               dao = new dao.factory.DaoFacatory().getDao("Oracle"  );     连接并初始化数据库
                dao.initDao();
                }
只要加上这句:testUser.setPassword("123");
protected void setUp(){
                testUser=new UserBean();
                testUser.setUserName( "s"  );    设置用户名
                testUser.setPassword("123");    设置用户密码
               dao = new dao.factory.DaoFacatory().getDao("Oracle"  );     连接并初始化数据库
                dao.initDao();
                }
可爱的绿条终于出现了!!!
刚开始我一直以为是数据库连接有问题,可是一直没有发现问题在哪,甚至我都想到了在junit环境里是不是对数据库连接有特别要求
我百思不得其解,我看了一遍又一遍,仅有的一点错误信息也发现不了任何线索。
最后我想可以尝试在数据库中的addUser()方法中输出抛出异常,加了这句
System.err.println(e);编译,调试~~
经过紧张的一段等待,在console里出现了我期待已久的信息:
com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in dao/ibatis/maps/oracleart.xml.  
--- The error occurred while applying a parameter map.  
--- Check the addUser-InlineParameterMap.  
--- Check the parameter mapping for the 'password' property.  
--- Cause: java.sql.SQLException: 无效的列类型
Caused by: java.sql.SQLException: 无效的列类型
非常清楚显示了错误的所在。
经历了这次磨难后,我深刻的意识到写抛出异常是多么的有必要!!!!我以前都懒的写这些。
还有原来以为的一个大bug竟源自一个小小的失误,我一度怀疑我的编程能力。

我写出来的目的是希望出学者能从我这次教训中吸取经验,不要步我的后尘,犯我这种低级错误。还有对自己要有信心,出现了错误后,要冷静的分析错误所在,不要为出现了错误调试不出而丧失了信心。也许你所认为的天大的错误就是你的一次不小心而已。

[ 本帖最后由 junit 于 2006-3-21 11:02 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-3-21 15:14:42 | 只看该作者
楼主把自己的经验教训发出来供大家参考学习,很是不错。以后多多来发一些经验帖,其实,测试高手说白了也就是经验比别人多些。大家互相分享经验和教训,成为高手应该也不会那么难了吧。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-3-24 20:45:56 | 只看该作者
楼主真好把自己的经验与我们分享谢谢啦
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-27 13:13 , Processed in 0.063792 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表