
Originally Posted by
mdeinum
Are you using your own test mechanism or use the test classes provided by Spring? I strongly suggest you use the latter.
Are there test classes provided by Spring? Will they help with this? my tests looks a little bit like this:
Code:
package net.bioclipse.lis.tests.daos;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import static org.junit.Assert.*;
import net.bioclipse.lis.genericDAO.IUserDAO;
import net.bioclipse.lis.pojos.User;
/**
* Tests all the functionality of the <code>UserDAO</code>
*
* @author jonathan
*
*/
public class UserDAOTest extends AbstractGenericDAOTest {
public IUserDAO getDAO(){
return (IUserDAO)dao;
}
public UserDAOTest() {
super("userDAO");
}
/**
* Test method for {@link net.bioclipse.lis.daos.UserDAO#delete(long)}.
*/
@Test
public void testDelete() {
User user = User.createUser("Delete Tester");
assertFalse(user.isDeleted());
getDAO().save(user);
session.flush();
session.clear();
getDAO().delete(user.getId());
session.flush();
session.clear();
User deleted = getDAO().getById(new Long(user.getId()));
assertTrue(deleted.isDeleted());
}
/**
* Test method for {@link net.bioclipse.lis.daos.UserDAO#getAll()}.
*/
@Test
public void testGetAll() {
User user1 = User.createUser("Getall Tester1");
User user2 = User.createUser("Getall Tester2");
getDAO().save(user1);
getDAO().save(user2);
session.flush();
session.clear();
List list = getDAO().findAll();
assertTrue(list.contains(user1));
assertTrue(list.contains(user2));
}
/**
* Test method for {@link net.bioclipse.lis.daos.UserDAO#save(net.bioclipse.lis.pojos.User)}.
*/
@Test
public void testSave() {
User user = User.createUser("Save Tester");
getDAO().save(user);
session.flush();
session.clear();
User savedUser = getDAO().getById(user.getId());
assertEquals(user, savedUser);
assertNotSame(user, savedUser);
}
/**
* Test method for {@link net.bioclipse.lis.daos.UserDAO#getById(long)}.
*/
@Test
public void testGetById() {
User user = User.createUser("Getbyid Tester");
getDAO().save(user);
session.flush();
session.clear();
User savedUser = getDAO().getById(new Long(user.getId()));
assertEquals(user, savedUser);
assertNotSame(user, savedUser);
}
@Test
public void testFindByName() {
User user = User.createUser("findMe");
getDAO().save(user);
session.flush();
session.clear();
ArrayList<User> retrievedUsers = (ArrayList<User>)getDAO().findByName("findMe");
User savedUser = retrievedUsers.get(0);
assertEquals(user, savedUser);
assertNotSame(user, savedUser);
}
}
Code:
public abstract class AbstractGenericDAOTest {
protected IGenericDAO dao;
protected Session session;
protected ApplicationContext context;
//snip
public AbstractGenericDAOTest(String DAOBeanName){
context = new ClassPathXmlApplicationContext("applicationContext.xml");
dao = (IGenericDAO)context.getBean(DAOBeanName);
session = SessionFactoryUtils.getSession(dao.getSessionFactory(),true);
}
@Before
public void setUp() throws Exception {
net.bioclipse.lis.tests.Tools.newCleanDatabase();
TransactionSynchronizationManager.bindResource(dao.getSessionFactory(), new SessionHolder(session));
//snipp
@After
public void tearDown(){
TransactionSynchronizationManager.unbindResource(dao.getSessionFactory());
SessionFactoryUtils.releaseSession(session, dao.getSessionFactory());
And they works fine except for when I run alot of them at the same time...