亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號