On Fri, Apr 6, 2012 at 1:12 PM, Benjamin <
[email protected]> wrote:

>
> On Apr 5, 2012, at 3:37 PM, Guillermo Polito wrote:
>
>
> On Thu, Apr 5, 2012 at 3:17 PM, Benjamin <
> [email protected]> wrote:
>
>> per instance ?
>> I you wanna know when a test instance you run started, I think there are
>> better solutions than announcement.
>>
>
> Hehe, actually, if you are the one firing the test, then you do need
> nothing :).  Also the tests instances are discarded to have independent
> state so what I said is nonsense :).
>
>
>>
>> For me the goal of announcement is to emit, and than everyone can catch
>> this information.
>>
>
> Hmm, that's one specific use for them...  You can build for example a
> small application using announcements to decouple the UI from the model,
> and there you probably will not make the announcer accessible for everyone.
>
>
> It's not specific, I think it should be the default behavior.
>
> Because if you want to listen only the FooTestClass announcement, you can
> always record yourself as a listener for all TestAnnouncement, and then
> test if the announcement is relevant for you or not.
>
>
> Because if you need to know which class emit the announcement to be able
> to register, then you create a strong dependency from your class to the
> test class. And this is wrong (and announcement have been introduced to
> break this pattern)
>

But that way you are creating a strong dependency against another class
like TestAnnouncement or just TestCase :P.  And if you want to filter the
announcements for a specific class, you will do it too!

Anyway, if you're metaprogramming, then for sure are other ways to get the
class without having a static reference to it.



>
>
> Ben
>
>
>  On Thu, Apr 5, 2012 at 2:57 PM, Benjamin <
>> [email protected]> wrote:
>>
>>> Since there is an announcer per test class, you need to write something
>>> like
>>>
>>> MyClass>>#register
>>>        MyTestClass announcer
>>>                on: TestCaseStarted send: #foo to: self.
>>>
>>> It means than here you force a link from MyClass to MyTestClass.
>>> And if you want to be aware of all test case started, you need something
>>> like
>>>
>>> TestCase withAllSubclasses do: [:e | e announcer
>>>
>>>  on: TestCaseStarted send: #foo to: self ].
>>>
>>> Why not using only one Announcer (and TestAnnouncer already exists and
>>> is already integrated) for all test class ?
>>>
>>> And then you lack the possibility to subscribe to a specific one...
> Maybe you can add a method in TestCase hiding the subscriptions to all the
> subclasses.
>
>
>>
>>> Ben
>>>
>>>
>>> On Apr 5, 2012, at 3:50 PM, Alexandre Bergel wrote:
>>>
>>> > I proposed this test announcement facilities some times ago to get
>>> notified when tests are being executed and when they are done.
>>> >
>>> > You said: "It means that you have to know which class to register to
>>> instead of which announcer."
>>> > Which unit to register you mean? Yes, the one you are interested in. I
>>> do not see why it break the pattern. Consider
>>> TestCaseTest>>testAnnouncement. What is wrong with it?
>>> >
>>> > Cheers,
>>> > Alexandre
>>> >
>>> >
>>> > On 5 Apr 2012, at 06:14, Benjamin wrote:
>>> >
>>> >> Hello guys,
>>> >>
>>> >> I was implementing in Nautilus a listener to TestCaseStarted, and
>>> then I figured out that each TestCase subclasses have its own Announcer.
>>> >>
>>> >> It means that you have to know which class to register to instead of
>>> which announcer. In a way, it breaks the Observer pattern.
>>> >>
>>> >> Is there any good reason I am missing ?
>>> >>
>>> >> I think it has been done in a way you can spy a particular test
>>> class, but since you have this info in the announcement itself, you can
>>> always filter with this info.
>>> >> Cause for me, replacing all those announcer by TestAnnouncer seems to
>>> be a better solution.
>>> >>
>>> >>
>>> >>
>>> >> Thanks in advance,
>>> >>
>>> >> Ben
>>> >
>>> > --
>>> > _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>> > Alexandre Bergel  http://www.bergel.eu
>>> > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >
>>>
>>>
>>>
>>
>>
>
>

Reply via email to