为了账号安全,请及时绑定邮箱和手机立即绑定

junit.framework.AssertionFailedError: expected:<true> but was:<false> at junit.framework.Assert.fail(Assert.java:57) at junit.framework.Assert.failNotEquals(Assert.java:329) at junit.framework.Assert.assertEquals(Assert.java:78) at junit.framework.Ass

package service.impl;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import db.MyHibernateSessionFactory;
import entity.Users;
import service.UsersDAO;

public class UsersDAOImpl implements UsersDAO {

	@Override
	public boolean usersLogin(Users u) {

		// 事物对象
		Transaction tx = null;
		String hql = "";

		try {
			Session session = MyHibernateSessionFactory.getSessionFactory().getCurrentSession();
			tx = session.beginTransaction();
			hql = "from Users where username=? and password=? ";
			Query query = session.createQuery(hql);
			query.setParameter(0, u.getUsername());
			query.setParameter(1, u.getPassword());
			List<?> list = query.list();
			
			tx.commit();//提交事物
			
			if (list.size()>0) {
				return true;
			} else {
				return false;
			}

		} catch (Exception ex) {
			ex.printStackTrace();
			return false;
		} finally {
			if (tx != null) {
				tx = null;

			}
		}
	}

}


package service.impl;

import org.junit.Test;

import entity.Users;
import junit.framework.Assert;
import service.UsersDAO;

public class TestUsersDAOImpl {

	@Test
	public void testUsersLogin() {

		Users u = new Users(1, "zhangsan", "123456");
		UsersDAO udao = new UsersDAOImpl();
		// udao.usersLogin(u);
		Assert.assertEquals(true, udao.usersLogin(u));
		//将expected改为false则测试通过
	}

}

DeBug显示返回的list的  size 0



正在回答

11 回答

错的很明显啊。

29行:List<?> list = query.list();

泛型是【?】,那list除了null以外,任何参数都不接收。

0 回复 有任何疑惑可以回复我~

我也是这个问题 不过已经解决了 楼主还没解决的话可以问我

0 回复 有任何疑惑可以回复我~
#1

慕粉2201020

您好,请问您是如何解决的呀? 我也遇到了这个问题... junit.framework.AssertionFailedError: Expected: <null> but was: Unknown failure at junit.framework.Assert.fail(Assert.java:50) at junit.framework.Assert.assertTrue(Assert.java:20)
2017-08-14 回复 有任何疑惑可以回复我~
#2

夏侯瑾軒

我的是 在写myfactory那个类的时候写错了 个人建议 你在错的那里每隔一句打印一次 我就是这样锁定错那一句的
2017-08-14 回复 有任何疑惑可以回复我~
#3

慕粉2201020 回复 夏侯瑾軒

恩恩 还是没解决 但还是谢谢你~
2017-08-16 回复 有任何疑惑可以回复我~
#4

夏侯瑾軒 回复 慕粉2201020

那你试试在try语句中 每隔一句话 打印一下 这样就可以知道哪一句出问题
2017-08-16 回复 有任何疑惑可以回复我~
查看1条回复

是数据库没加数据吧

0 回复 有任何疑惑可以回复我~

有人解决了吗


0 回复 有任何疑惑可以回复我~
#1

慕粉0927495923

解决了,hql语句哪里 from 前面加上select *
2018-07-16 回复 有任何疑惑可以回复我~

有一点需要大家注意的是尽管hibernate查询语句能识别数据库语句生成脚本语言,两者很相像但是还是有所有区别hibernate执行查询语句的时候查询的是一个对象,也就是说数据库里面的表名hibernate并不是hibernate中的对象,而实体类的类名才是hibernate查询的对象

0 回复 有任何疑惑可以回复我~

先执行 <property name="hbm2ddl.auto">create</property>创建完表后,再把create改成update就好了。避免了启动的时候又重新创表,那之前的表里面的数据就会被销毁。销毁之后,user对象的值就会查询不到,然后会抛出这个junit.framework.AssertionFailedError: expected:<true> but was:<false>异常。大家是不是运行代码的时候抛出这个异常?当抛出这个异常的时候,大家打开数据库里面的表,可以看看表里面原先存放的的数据是不是被销毁了!只需要执行一次create就行了,然后把create改成update就OK祝各位猿友。

1 回复 有任何疑惑可以回复我~
#1

Gonme

原来就是update,但还是会在测试的时候出错 [Assert.assertEquals(true, udao.usersLogin(u)); //将expected改为false则测试通过] 如果是true就不行,主要是这里一直没通过
2017-04-28 回复 有任何疑惑可以回复我~
#2

勤浇水hehe

我按照你的方法做了,可是还是错误
2017-05-08 回复 有任何疑惑可以回复我~
#3

慕粉0927495923 回复 勤浇水hehe

解决了,hql语句哪里 from 前面加上select *
2018-07-16 回复 有任何疑惑可以回复我~

有人解决了这个问题吗?

0 回复 有任何疑惑可以回复我~
#1

勤浇水hehe

问题解决了吗?
2017-05-08 回复 有任何疑惑可以回复我~
#2

慕粉0927495923 回复 qq_无朋孤_0

解决了,hql语句哪里 from 前面加上select *
2018-07-16 回复 有任何疑惑可以回复我~

现在我也是这个问题,可是我本来写的就是update,所以请问一下,这个问题是怎么解决的?


0 回复 有任何疑惑可以回复我~
#1

梦想月薪10W

问一下,你解决了这个问题了吗?
2017-03-22 回复 有任何疑惑可以回复我~

我按照你这样弄了还是不对啊 ?

0 回复 有任何疑惑可以回复我~
#1

梦想月薪10W

解决了这个问题了吗?
2017-03-22 回复 有任何疑惑可以回复我~
#2

慕粉0927495923 回复 梦想月薪10W

解决了,hql语句哪里 from 前面加上select *
2018-07-16 回复 有任何疑惑可以回复我~

不是这样的;原因已找到

<!-- 

<property name="hbm2ddl.auto">create</property>

-->

<property name="hbm2ddl.auto">update</property>  //配置错了;应该是update

create:表示启动的时候先drop,再create
create-drop: 也表示创建,只不过再系统关闭前执行一下drop
update: 这个操作启动的时候会去检查schema是否一致,如果不一致会做scheme更新
validate: 启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新

0 回复 有任何疑惑可以回复我~
#1

蓝小七

把这里的update改成drop就可以了 原来的create或者update是先删除后再创建 这样你的返回值永远都是false 因为你存数据的那个表已经被删掉了
2016-05-13 回复 有任何疑惑可以回复我~
首页上一页12下一页尾页

举报

0/150
提交
取消

junit.framework.AssertionFailedError: expected:<true> but was:<false> at junit.framework.Assert.fail(Assert.java:57) at junit.framework.Assert.failNotEquals(Assert.java:329) at junit.framework.Assert.assertEquals(Assert.java:78) at junit.framework.Ass

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信