Dear list, I am using appfuse with Spring and Hibernate and i am having kind of the same problem as Paul http://www.nabble.com/ActionTest---Not-executing-sql-queries-on-Action.class-tp23680254s2369p23753651.html.
So i have the following class public class Dataset extends BaseObject { private Long id; private User owner; public Dataset{ } @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() { return id; } @ManyToOne @JoinColumn(name = "owner_id", nullable = false) @org.hibernate.annotations.ForeignKey(name = "FK_DATASET_OWNER_ID") public User getOwner() { return owner; } //i have omitted the rest of the method and attributes for clarity public void setId(Long id) { this.id = id; } public void setOwner(User owner) { this.owner = owner; } } As you can see that i have a ForeignKey reference on User. When i run tests at the DAO level where i try to remove a User that is referenced by a Dataset, as expected a ConstraintViolationException is thrown, which i can nicely handle in a catch block. But when i run the same test at the Service level(the manager is only calling the DAO's remove method) it fails because no exception is thrown. If i set the defaultRollback to false, a ConstraintViolationException is thrown but outside my try-catch block. So i was wondering if there is a way to do this kind of tests in the Manager, and what is the reason behind this behavior?? Here is my DAO test public class DatasetDaoTest extends BaseDaoTestCase { private DatasetDao dsDAO; private UserDao userDAo; public void setDatasetDao(DatasetDao datasetDao) { this.dsDAO = datasetDao; } public void setUserDao(UserDao userDao) { this.userDAo = userDao; } public void testFailToRemoveUser() { Dataset dataset = dsDAO.get(-1L); User owner = dataset.getOwner(); assertNotNull(owner); try { userDAo.remove(owner.getId()); flush();// of course not flushing the session will make the test to fail fail("ConstraintViolationException is not thrown "); } catch (Exception e) { log.debug(e.getMessage()); } } } Here is the ManagerTest public class DatasetManagerTest extends BaseDaoTestCase { private DatasetManager datasetManager; private UserManager userManager; public void setDatasetManager(DatasetManager datasetManager) { this.datasetManager = datasetManager; } public void setUserManager(UserManager userManager) { this.userManager = userManager; } public void testFailToRemoveUser() { this.setDefaultRollback(false); Dataset dataset = datasetManager.get(-1L); User owner = dataset.getOwner(); assertNotNull(owner); try { userManager.removeUser(owner.getId().toString()); // commenting the following instruction will throw a ConstraintViolationException BUT OUT OF THIS try-catch block fail("ConstraintViolationException is not thrown "); } catch (Exception e) { log.debug(e.getMessage()); } } } DEBUG - DatasetManagerTest.testFailToRemoveUser(589) | START FailToRemoveUser DEBUG - UserManagerImpl.removeUser(117) | removing user: -1 DEBUG - DatasetManagerTest.testFailToRemoveUser(600) | User removed DEBUG - DatasetManagerTest.testFailToRemoveUser(607) | STOP FailToRemoveUser WARN - JDBCExceptionReporter.logExceptions(77) | SQL Error: 1451, SQLState: 23000 thanks, Youssef _________________________________________________________________ Drag n’ drop—Get easy photo sharing with Windows Live™ Photos. http://www.microsoft.com/windows/windowslive/products/photos.aspx