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 >>> > ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. >>> > >>> > >>> > >>> > >>> > >>> > >>> >>> >>> >> >> > >
