Ok. I have somehow found my own answer. To delete the latest additional provisory object, you have to remember its id. My solution is like this.
Add a private field "id" of type Long. When you create the provisory object, store its id in onSetUpBeforeTransaction(): competency = competencyManager.save(competency); id = competency.getId(); Then overwrite the onTearDownAfterTransaction() method: @Override protected void onTearDownAfterTransaction() throws Exception { super.onTearDownAfterTransaction(); if (id != null) { log.debug("Deleting provisory object: " + id); Person person = new Person(); person.setId(id); action.setPerson(Person); action.delete(); id=null; } } Nice short quest. :-) Martin Homik wrote: > > Let me also add the comment that the test will cause an error if one of > the POJO fields is > annotated with "unique = true". That's because onSetUpBeforeTransaction() > is invoked > before each test and hence populates the database with as many additional > objects as > tests exist. > > According to my database, after finishing the tests, all additional > objects > are removed from the database. What's the counterpart of > onSetUpBeforeTransaction()? > How does the mechanism work? Will all added objects be removed from the > database after > finishing the last test? > > Martin > > > > chino fish wrote: >> >> >> >> >> On 5/16/07, chino fish <[EMAIL PROTECTED]> wrote: >>> >>> >>> >>> >>> 1. the test is function test, not unit test. Isn't it ? b/c it >>> uses >>> real service object, but mock objects. >> >> Yes. >> >>> >>> 2. the method followed is a bit of useless..b/c personManager andd >>> person are not used by other test at all. >> >> It's used to add at least one record to the database so testSearch() >> doesn't fail. >> >> Matt >> >> Oh, that's what I guessed ;-) >> It seems the method should only be called in testSearch method。 >> But actually, it is called before every test b/c the code was in method >> onSetupBeforeTransaction which is called by setup method. >> >> And b/c dbunit plunge some sample data into db, so there is already at >> least >> one record in the table. >> >>> >>> protected void onSetUpBeforeTransaction() throws Exception { >>> >>> >>> >>> super.onSetUpBeforeTransaction(); >>> >>> GenericManager personManager = (GenericManager) >>> applicationContext.getBean("personManager"); >>> >>> >>> >>> >>> >>> // add a test person to the database >>> >>> >>> >>> Person person = new Person(); >>> >>> person.setFirstName("Jack"); >>> >>> >>> >>> person.setLastName("Raible"); >>> >>> >>> >>> personManager.save(person); >>> >>> } >>> >>> >>> >>> chinofish >> >> >> -- >> http://raibledesigns.com >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> > > -- View this message in context: http://www.nabble.com/Two-questions-about-PersonActionTest-tf3768046s2369.html#a13056040 Sent from the AppFuse - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]