问答详情
源自:-

我用的是MYeclipse 为什么用junit4单元测试,可以正常执行usersAction去调用UsersDaoImpl代码块,但是用struts.xml来调用UsersAction去执行UsersDaoImpl,总是报异常

我用的是MYeclipse 为什么用junit4单元测试,可以正常执行usersAction去调用UsersDaoImpl代码块,但是用struts.xml来调用UsersAction去执行UsersDaoImpl,总是报异常,通过测试发现 用struts.xml来调用UsersAction去执行UsersDaoImpl代码块时 try....catch....里面的语句不执行,但是但用单元测试工具junit4去执行UsersAction代码去调用UsersDaoImpl代码块时,可以正常运行try...catch....里面的代码!有输出不解其中原因


5861174500015c8e05000403.jpg

5861174600016b6405000266.jpg


提问者:慕粉0735379657 2016-12-26 21:13

个回答

  • 慕粉0735379657
    2016-12-27 11:06:07

    附上代码,求大神指点

    public boolean userLogin(User u) {

    System.out.println(u);//测试值传过来没有

    //创建一个事物对象

    Session session = HibernateSessionFactory.getSession();

    //注意:getTransaction和beginTransaction的区别

    Transaction tx = session.getTransaction();

    try{

    tx.begin();

    //此处不能省略

    String hql = "from User where username=? and userpassword=?";

    Query query = session.createQuery(hql);

    //设置用户名和密码0代表where后面的第一个参数,1代表where第二个参数

    query.setParameter(0, u.getUsername());

    query.setParameter(1, u.getUserpassword());

    List<User> list = query.list();

    //提交事物(只有在增删改的时候才需要事物)

    tx.commit();

    // session.close();

    //判断是否查询到了用户

    //注意:方法的返回值默认以try里面的为准,之所以还要再加一个return返回值,是为了语法不出错而已,返回结果没有实际意义

    if(list!=null){

    System.out.println("AAAAAAAAAAAAAA");

    return true;

    }else{

    return false;

    }

    }catch(Exception ex){

    ex.printStackTrace();

    tx.commit();

    }finally{

    if(tx != null){

    tx=null;

    }

    }

    return false;

    }


    }