package com.tencent.dao; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.util.List; import org.apache.log4j.Logger; import org.junit.After; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.transaction.TransactionConfiguration; import com.tencent.model.Blog; import com.tencent.model.User; @ContextConfiguration({ "/applicationContext.xml" }) @TransactionConfiguration(transactionManager = "hibernateTransactionManager", defaultRollback = true) public class BlogDAOImplTest { public static Logger log = Logger.getLogger("BlogDAOImplTest.class"); private Blog blog = new Blog("title", "content", 1); private User user = new User("username", "password", "M", "test@qq.com", "935789181", "13871398643", "CS", "大二", 0, "description", 1, 1); private User t_user; private static IBlogDAO blogDao; private static IUserDAO userDao; @BeforeClass public static void setUpBeforeClass() throws Exception { ApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml"); blogDao = (IBlogDAO) ctx.getBean("blogDao"); userDao = (IUserDAO) ctx.getBean("userDao"); } @Before public void setup() throws Exception { t_user = userDao.findByName("username"); if(t_user == null){ int id = userDao.save(user); t_user = userDao.findById(User.class, id); } blog.setAuthor(t_user); } @After public void tearDown() throws Exception { Blog t_blog = blogDao.findByTitle("title"); if (t_blog != null) { blogDao.delete(t_blog); } t_user = userDao.findByName("name"); if(t_user != null){ userDao.delete(t_user); } } @Test @Rollback(true) public final void testFindByTitle() { int id = blogDao.save(blog); Blog t_blog = blogDao.findByTitle("title"); assertEquals("title", t_blog.getTitle()); assertEquals(id, t_blog.getId()); } @Test @Rollback(true) public final void testFindById() { int id = blogDao.save(blog); Blog t_blog = blogDao.findById(Blog.class, id); assertEquals(id, t_blog.getId()); } @Test public final void testSave() { int id = blogDao.save(blog); Blog t_blog = blogDao.findById(Blog.class, id); assertEquals(id, t_blog.getId()); } @Test public final void testDelete() { int id = blogDao.save(blog); Blog t_blog = blogDao.findById(Blog.class, id); blogDao.delete(t_blog); t_blog = null; t_blog = blogDao.findById(Blog.class, id); assertNull(t_blog); } @Test public final void testUpdate() { int id = blogDao.save(blog); Blog t_blog = blogDao.findById(Blog.class, id); t_blog.setContent("test"); blogDao.update(t_blog); t_blog = null; t_blog = blogDao.findById(Blog.class, id); assertEquals("test", t_blog.getContent()); } @SuppressWarnings("unchecked") @Test public final void testListString() { int id = blogDao.save(blog); List<Blog> list = (List<Blog>) blogDao.list("from Blog"); assertTrue(!list.isEmpty()); assertEquals(id, list.get(0).getId()); } @SuppressWarnings("unchecked") @Test public final void testListStringIntIntObjectArray() { blogDao.save(blog); List<Object[]> list = (List<Object[]>) blogDao.list( "select b.title,b.content from Blog b where b.title=? and b.content=?", 0, 1, "title", "content"); assertTrue(!list.isEmpty()); assertEquals("title",(String)list.get(0)[0]); } }