I have a few DecoratorPatternAttribute subclasses defined, but they
don't work quite the way I thought they did.

If I've got a fixture with a setup, the test itself, and a teardown,
the flow looks like this:
    1. SetUp
    2. MyTest
    3. TearDown

I thought the DecoratorPatternAttribute would provide the Invoker, and
that Invoker would wrap the entire process. Note that I don't want it
to wrap the FIXTURE, just the single test's SetUp/Test/TearDown, as
so:
    1. MyInvoker.Execute begins, calls its Invoker.Execute which leads
to 2-4
    2. SetUp
    3. MyTest
    4. TearDown
    5. The internal call to Invoker.Execute from Step 1 ends, and
MyInvoker.Execute completes its work.

But what really happens is that a new Invoker is created for each
step.
    1. MyInvoker.Execute begins, calls its Invoker.Execute which leads
to 2 ONLY
    2. SetUp
    3. The internal call to Invoker.Execute from Step 1 ends, and
MyInvoker.Execute completes its work.
    4. MyInvoker.Execute begins, calls its Invoker.Execute which leads
to 5 ONLY
    5. MyTest
    6. The internal call to Invoker.Execute from Step 4 ends, and
MyInvoker.Execute completes its work.
    7. MyInvoker.Execute begins, calls its Invoker.Execute which leads
to 8 ONLY
    8. TearDown
    9. The internal call to Invoker.Execute ends from Step 7, and
MyInvoker.Execute completes its work.

This makes a lot of use cases impossible:
    - I can't set up some external resource in my Attribute, modify
it's behavior in the SetUp, and then use it in the Test, because by
the time the Test rolls around the Attribute has fired again, and the
SetUp steps are overridden by the new Attribute.
    - I can't modify the resource in SetUp and TearDown the resulting
object, because in TearDown it's a new Attribute that doesn't know any
of the changes that occured in SetUp. So if I had a cache of files on
disk, I can't change that location in SetUp, or I'd leak those files.

If the Invoker was the same one every time I could keep track of it
that way, but it's a new instance each time, so no dice.

How would I go about making the "wrap the whole process" decorator I
want? Is it possible using some other class, or do I have to involve
myself with the IRun interface and it's ilk (which I haven't needed to
deal with yet)?


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"MbUnit.User" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/MbUnitUser?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to