好的,我需要一些帮助。我在DAO课程中有这个方法,我需要测试它:
public boolean saveOrUpdateUser(User user) {
boolean res = false;
try {
this.getHibernateTemplate().saveOrUpdate(user);
res = true;
} catch (DataAccessException e) {
res = false;
this.logger.error("DataAccessException", e);
}
return res;
}
以下是我的测试方法:
public void saveAndUpdateUserTest() {
User user =new User ();
user.setUserid(12);
user.setFirstname("John");
user.setLastname("Smith");
assertEquals(12,user.getUser_id());
assertEquals("John",user.getFirstname());
assertEquals("Smith",user.getLastname());
}
我需要在saveAndUPdateUserTest中以某种方式调用此方法,但我不知道要传递哪个参数!有人可以帮忙吗?
public boolean saveOrUpdateUser(User user){..}
用户用户意味着什么? 我有一个包含set和get方法的类user.java。
提前致谢。我还是初学者,我需要建议并帮助如何继续。
答案 0 :(得分:2)
不是一个真正的答案,但无论你写什么测试,代码都是错误的。 Hibernate抛出的异常是不可恢复的,因此你不应该抓住它们并假装没有发生任何事情。代码应该是
public void saveOrUpdateUser(User user) {
this.getHibernateTemplate().saveOrUpdate(user);
}
或者,如果你真的想要日志:
public void saveOrUpdateUser(User user) {
try {
this.getHibernateTemplate().saveOrUpdate(user);
}
catch (DataAccessException e) {
this.logger.error("DataAccessException", e);
throw e;
}
}
另一个注意事项:HibernateTemplate
是documented,因为“你不应该再使用这个课程了”。它甚至不再存在于Hibernate 4中。
我同意评论。如果您不了解对象和方法参数,请首先学习Java的基础知识。 Spring和Hibernate比基础知识要高很多,如果你不了解基本的Java /编程概念,你就会遇到困难。
答案 1 :(得分:0)
public void saveAndUpdateUserTest() {
//here is your variable of type User
User user =new User ();
user.setUserid(12);
user.setFirstname("John");
user.setLastname("Smith");
assertEquals(12,user.getUser_id());
assertEquals("John",user.getFirstname());
assertEquals("Smith",user.getLastname());
//you need to pass a variable with type User
saveOrUpdateUser(user);
}
this将是一个很好的起点。
答案 2 :(得分:0)
您永远不应该像在代码中那样捕获异常。回到你的问题,记住称为AAA的主要TDD模式 - 安排,行动,断言。
安排是您初始化SUT的地方(被测系统) 行动发生了(调用测试系统) 断言是你检查结果。
public void anyKindOfTest() {
// arrange
// act
// assert
}
在你的情况下,
public void shouldStoreUser () {
// arrange
User user = new User ("John", "Smith");
UserStorage userStorage = new UserStorage();
// act
userStorage.store(user);
// assert
assertNotNull(user.id);
}