W make extensive use of the rollback pre test case paradigm for our proprietary application. It is invaluable. The test cases may run a little slower than if the setup/rollback was performed per suite, but the inter-testcase dependancies would be a nightmare for us to manage.
----- Original Message ----- From: "Scott Gray" <scott.g...@hotwaxmedia.com> To: dev@ofbiz.apache.org Sent: Thursday, December 24, 2009 3:14:26 AM GMT -05:00 US/Canada Eastern Subject: Re: Delegator rollback per test case? I'd really rather not have this idea die with a single response, I've done my best to describe the perceived benefits and it would be good to get some additional feedback from anyone who is interested. Thanks Scott On 13/12/2009, at 8:20 PM, Scott Gray wrote: > My intention was generally to have one test suite per sub-package > e.g. one for org.ofbiz.accounting.finaccount, one for > org.ofbiz.accounting.fixedasset, etc. > > Lets say I want to run 50 different order processing tests, > cancellations, edits, authorizations, packing, etc. To do this I > have to either create 50 different demo orders which is time > consuming or I have to split them up into different test suites > which will quickly leave us with a huge number of test suites all > doing very similar things. > > Aside from the above there are a few other things I don't like about > having only one rollback per test suite: > - When adding a new test case to a suite you have no idea what state > the database will be in unless you inspect all of the other test > cases in the suite and understand what they are doing. > - It makes test cases more difficult to maintain because you have no > idea where the dependencies are within a suite. With the change I'm > suggesting you would need to be explicit about dependancies by > putting the cases in a test group. > - If you make some application code or demo data changes and 10 test > cases in a suite start failing you have no idea if it's because a > single case is failing and the others depend on it or because your > changes are causing wide spread problems. Knowing the dependancies > helps the developer to understand how big the problem is before they > go through and examine every failed case. > > Ultimately my only goal here is to make writing tests easier, I'm > not approaching it with any idealistic "this is how tests should be > conducted" mentality. The easier we can make it, the more likely it > is that people will actually write them. > >> I'm unclear about something in your message though: are you saying >> you are doing it below and it's not meeting your needs, or that you >> would like to be able to do it as below? > > I'm not sure what you mean, what I'm suggesting below isn't > currently possible. The test-group tag actually does nothing at the > moment (other than add the child test cases to the suite, which is > the same as not having it at all). > > Regards > Scott > > On 13/12/2009, at 3:44 PM, David E Jones wrote: > >> >> My preference would still be to have one roll-back per test-suite, >> which basically means one transaction per XML file. If you want the >> tests to use the same data then put them in the same file. If you >> want them to use different data, then they go in their own files. >> >> I'm unclear about something in your message though: are you saying >> you are doing it below and it's not meeting your needs, or that you >> would like to be able to do it as below? >> >> -David >> >> >> On Dec 11, 2009, at 3:54 AM, Scott Gray wrote: >> >>> We've had this discussion before, here is last one I could find: >>> http://markmail.org/message/ftvs45vnzlobo7hb >>> >>> The solution I would like to propose for the problem David >>> described is for us to make more use of the test-group child >>> element of test-suite and have tests within those groups rollback >>> as a group, for all other test cases we'd roll them back as soon >>> as they complete. Here's an example of what I'm talking about >>> since that description probably did nothing for you: >>> >>> <test-suite> >>> >>> <test-case/> >>> <!-- Rollback here --> >>> <test-case/> >>> <!-- Rollback here --> >>> <test-case/> >>> <!-- Rollback here --> >>> >>> <!-- No rollbacks inside the test group --> >>> <test-group> >>> <test-case/> >>> <test-case/> >>> </test-group> >>> <!-- Rollback here --> >>> >>> </test-suite> >>> >>> A common problem I'm seeing is that we want to run multiple tests >>> on the same piece of demo data but can't because the previous test >>> has already altered it. An example might be where you want to try >>> shipping a single order in various different splits but you can't >>> do that at the moment without having a separate demo order for >>> each test. >>> >>> Thoughts? >>> >>> Thanks >>> Scott >>> >>> HotWax Media >>> http://www.hotwaxmedia.com >>> >>> >> >