急!!!!一个数据库测试的问题
急!!!!一个数据库测试的问题我的测试原代码如下:
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 编辑 ]
我找到了答案了,原来是我的一个小小的失误
我找到了答案了,原来是我的一个小小的失误,可是 我却为它苦恼了好几天。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 编辑 ] 楼主把自己的经验教训发出来供大家参考学习,很是不错。以后多多来发一些经验帖,其实,测试高手说白了也就是经验比别人多些。大家互相分享经验和教训,成为高手应该也不会那么难了吧。 楼主真好把自己的经验与我们分享谢谢啦
页:
[1]