qukmei 发表于 2004-11-2 11:14:33

急:java单元测试junit,cactus如何与容器内的jndi交互测javaBean

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

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

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执行了一下 ,web应用是没有问题。

我想对这类进行单元测试,用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、还有没有其它的好办法呀?

panqiang 发表于 2004-11-2 16:05:00

我也遇到这个问题,也就是不知道怎么样不测,希望来个大哥给简单的介绍一下。在这儿谢谢了

qukmei 发表于 2004-11-2 16:16:01

那你有没有好办法呀?

哪位高人可以指点一下呀?

qukmei 发表于 2004-11-4 09:16:16

晕,谁来教我呀?

qukmei 发表于 2004-11-19 10:52:50

继续顶一下,我要答案呀

cnkhtd 发表于 2007-6-25 00:46:53

我也很想知道答案,,请教高人.
页: [1]
查看完整版本: 急:java单元测试junit,cactus如何与容器内的jndi交互测javaBean