51Testing软件测试论坛

标题: 急:java单元测试junit,cactus如何与容器内的jndi交互测javaBean [打印本页]

作者: qukmei    时间: 2004-11-2 11:14
标题: 急: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
我也遇到这个问题,也就是不知道怎么样不测,希望来个大哥给简单的介绍一下。在这儿谢谢了
作者: qukmei    时间: 2004-11-2 16:16
那你有没有好办法呀?

哪位高人可以指点一下呀?
作者: qukmei    时间: 2004-11-4 09:16
晕,谁来教我呀?
作者: qukmei    时间: 2004-11-19 10:52
继续顶一下,我要答案呀
作者: cnkhtd    时间: 2007-6-25 00:46
我也很想知道答案,,请教高人.




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2