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)


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