会tomcat,会junit或cactus单元测试,会ant的进来,高分放分大行动!

qukmei 2004-11-01 08:42:46
来者有分,顶者有分,分不够新开贴再加,来吧,只有分,没别的了!

经过不断努力,cactus我会用了,是与ant结合的,可以测一些servlet了。

但我想测一下我这个类,如何测呀?

package mocktest.bean;

import org.genius.data.DataConfig;
import java.sql.*;

public class UserInfo {

private String username;
private String password;

public void setUsername(String name)
{
username=name;
}

public void setPassword(String pass)
{
password=pass;
}

public String getUsername()
{
return username;
}

public String getPassword()
{
return password;
}
public UserInfo() {
}

public int checkUser()
{
int tmpInt=0;//0为没有,1为有。
String sql=null;
ResultSet rs;
DataConfig mydbc=null;
try
{
mydbc=new DataConfig();
//mydbc.setJNDI("jdbc/mock");
mydbc.setJNDI("java:/comp/env/jdbc/mock");
//mydbc.setJNDI("mockJNDI");
sql="select * from userdata where username=\'"+username+"\' and
password=\'"+password+"\'";
rs=mydbc.executeQuery(sql);
if(rs.next())
{
tmpInt=1;
}
else
{
tmpInt=0;
}
rs.close();
//mydbc.closeConn();
}
catch(Exception e)
{
System.err.println(e+"error");
}
finally
{
try
{
mydbc.closeConn();
}
catch(Exception e)
{
e.printStackTrace();
}
}
return tmpInt;
}

public int addUser()
{
int tmpInt=0;//0为失败,1为有重复注册,2为成功
String sql=null;
ResultSet rs;
DataConfig mydbc=null;
DataConfig mydbcins=null;
try
{
mydbc=new DataConfig();
//mydbc.setJNDI("jdbc/mock");
mydbc.setJNDI("java:/comp/env/jdbc/mock");
//mydbc.setJNDI("mockJNDI");
sql="select * from userdata where username=\'"+username+"\'";
rs=mydbc.executeQuery(sql);
if(rs.next())
{
tmpInt=1;
}
else
{
sql="insert into userdata (username,password) values
(\'"+username+"\',\'"+password+"\')";
mydbcins=new DataConfig();
//mydbc.setJNDI("jdbc/mock");
mydbcins.setJNDI("java:/comp/env/jdbc/mock");
//mydbc.setJNDI("mockJNDI");
mydbcins.executeUpdate(sql);
mydbcins.closeConn();
tmpInt=2;
}
//mydbc.closeConn();
}
catch(Exception e)
{
System.err.println(e+"error");
}
finally
{
try
{
mydbc.closeConn();
}
catch(Exception e)
{
e.printStackTrace();
}
}
return tmpInt;
}


}

以上是一个简单的javaBean,访问数据库,通过tomcat配的连接池,与jsp结合启动tomcat执行了一下
没有问题。

我想对这类进行单元测试,用cactus来测,用例我写好了,但就是不能执行测试呀,因cactus启动的是
tomcat的一个副本,容器里没有我配的连接池呀,怎么来做这种测试呀?

package mocktest.bean;

import junit.framework.*;

public class TestUserInfo extends TestCase {
private UserInfo userInfo = null;

protected void setUp() throws Exception {
super.setUp();
userInfo = new UserInfo();
}

protected void tearDown() throws Exception {
userInfo = null;
super.tearDown();
}

public void testCheckUser() {
userInfo.setUsername("hh");
userInfo.setPassword("hh");
//int expectedReturn = 0;
int actualReturn = userInfo.checkUser();
//System.out.println(actualReturn);
assertEquals(1, actualReturn);
//assertEquals(1, expectedReturn, actualReturn);
/**@todo fill in the test code*/
}

}

1、能不能有办法,让cactus启动的tomcat里存在连接池。

2、或者能让自己的程序部署的时候,用ant产生一个连接池呀?

3、还有没有其它的好办法呀?
...全文
330 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdcx 2004-11-05
  • 打赏
  • 举报
回复
具体实现如下
interface DBAction{
ResultSet executeQuery(String sql);
}

class DataConfig implements DBAction{
}

class MockDBAction implements DBAction{
}

class UserInfo {
DBAction dbAction ;
public UserInfo(DBAction dbaction){
this.dbAction = dbAction ;
}

public int checkUser() {
.....
ResultSet rsdbAction.execteQuery(sql);
.....
}
}
在测试阶段传入MockAction对象实例,在生产阶段传入DataConfig实例
cdcx 2004-11-05
  • 打赏
  • 举报
回复
你应该重新思考一下你的设计,为什么单元测试会困难?
你的问题应该是对连接池的依赖太强,导致测试困难.如下
mydbc=new DataConfig();
//mydbc.setJNDI("jdbc/mock");
mydbc.setJNDI("java:/comp/env/jdbc/mock");
//mydbc.setJNDI("mockJNDI");
sql="select * from userdata where username=\'"+username+"\' and
password=\'"+password+"\'";
rs=mydbc.executeQuery(sql);

你应该摆脱对DataConfig的依赖,重新建立一个"数据访问"的接口,mock该接口来测试你的java bean.也就是说你的javabean依赖一个""数据访问"接口,而不是一个具体的DataConfig对象,该接口在运行期间动态的传入.


guojiafuzhuxi 2004-11-05
  • 打赏
  • 举报
回复
figoren 2004-11-05
  • 打赏
  • 举报
回复
没用过 顶
qukmei 2004-11-04
  • 打赏
  • 举报
回复
我在jbx下可以生成,可以来做,但最后还是测不成功呀,给指点一下吧
leoer 2004-11-03
  • 打赏
  • 举报
回复
这个也是什么框架吗?
dlmaomao 2004-11-03
  • 打赏
  • 举报
回复
学习
miaoliujun 2004-11-03
  • 打赏
  • 举报
回复
用jbuilder自动帮你生成向导。
yuaoyao 2004-11-02
  • 打赏
  • 举报
回复
学习
德仔 2004-11-02
  • 打赏
  • 举报
回复
不顶白不顶.111111111
wangkunhong 2004-11-02
  • 打赏
  • 举报
回复
UP,死皮~~~~jo~~
junxi 2004-11-02
  • 打赏
  • 举报
回复
好久没有看javabean了

up一下,学习中
qukmei 2004-11-02
  • 打赏
  • 举报
回复
是呀,测试报告当然能出来的。

但就是不能测呀,dlxu(沿着Java继续前进) 你有没有什么高见呀?

如何解决我那个与容器的数据库相关的测试呀?
dlxu 2004-11-02
  • 打赏
  • 举报
回复
呵呵,用Ant加上JUNIT的确比较爽,还能自动生成测试报告
meixi 2004-11-02
  • 打赏
  • 举报
回复
关注,学习
secondlf 2004-11-02
  • 打赏
  • 举报
回复
强烈关注,认真学习
znef88 2004-11-02
  • 打赏
  • 举报
回复
91jk 2004-11-02
  • 打赏
  • 举报
回复
晕死,我一点也不会java~~郁闷
德仔 2004-11-02
  • 打赏
  • 举报
回复
顶!!!!!!!!!!11
luckydog903 2004-11-02
  • 打赏
  • 举报
回复
强烈支持并且学习一下...
加载更多回复(7)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧