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 编辑 ]作者: junit 时间: 2006-3-21 10:55 标题: 我找到了答案了,原来是我的一个小小的失误 我找到了答案了,原来是我的一个小小的失误,可是 我却为它苦恼了好几天。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竟源自一个小小的失误,我一度怀疑我的编程能力。