On Thu, Aug 09, 2001 at 10:15:24AM +0100, Stuart Roebuck wrote: > Funnily enough I spent Tuesday working out a solution for this kind of > issue for a Cocoon Action I'm working on at the moment. > > I went for a 'mock' object approach [see > <http://mockobjects.sourceforge.net/endotesting.html>],
Is there some mailing list I'm not on where cool stuff like this gets announced? ;) I think this mock object approach could simplify many Avalon unit tests. > [snip C2 Action example] > > My personal feeling is that setting up specialized TestCases for testing, > whilst it may simplify the code of tests for people familiar with the code, > removes transparency and adds a level of complexity into the test cases > that could make them harder to maintain. e.g. you need to look at the > definition of the new TestCase in order to determine what the pre-set > state is and then learn the new methods for altering it. With plain Mock > classes you have to explicitly setup everything in the TestCase which may > require more lines of code (but then you can easily do a copy and paste > job from a previous test case), however, you end up with a test case that > is self contained and self documenting. The only new methods you need to > learn are additional methods in the mock classes that provide setup or > validation functionality. > I don't quite see how using Mock objects replaces Giacomo's solution. It seems to me that the Mock object technique is only applicable when you have a sausage-machine setup; feed an object it, crank the handle, get it out and examine what's happened to it. I can't see that this situation occurs much in your average Component's lifecycle. There's no point in a MockConfiguration or MockContext, as they're not returnable. > Stuart. > > PS. I'm intending feeding back the mock objects to Cocoon if folk are > interested. Hmm.. perhaps an org.apache.mock.* hierarchy, maintained in the sourceforge mockobjects-java package? --Jeff --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
