I'm aware of this idea. It is very interesting. Actually, I often meet this pattern in practice. But I don't see how it is connected with Mocks :)
2010/11/24 Tudor Girba <[email protected]> > Given this discussion, I would like to encourage you to take a look at > Phexample by Adrian Kuhn and Niko Schwarz, based on previous work of Markus > Gaelli. The basic idea is that there is no distinction between setup and > tests. They are all examples, and examples are built on top of each other. > > Phexample is completely compatible with SUnit. It also comes with a fancier > API, but even if you would like to debate this API, I believe it is a nice > thing that we should look more closely into. > > Here are two examples checking an implementation of Stack. The first one > creates the stack and checks that it should be empty, and the second one > checks the pushing behavior: > > ForExampleStack>>shouldBeEmpty > | stack | > stack := Stack new. > stack isEmpty should beTrue. > stack size should = 0. > ^ stack > > ForExampleStack>>shouldPushElement > | stack | > stack := self given: #shouldBeEmpty. > stack push: 42. > stack isEmpty should not beTrue. > stack size should = 1. > stack top should = 42. > ^ stack > > More information can be found here: > > http://smalltalkthoughts.blogspot.com/2009/11/phexample-because-examples-expand-on.html > > You can get it by simply: > Gofer new > squeaksource: 'phexample'; > addPackage: 'Phexample'; > load > > > Cheers, > Doru > > > On 24 Nov 2010, at 08:28, laurent laffont wrote: > > > I agree with you Dennis. TDD practices are far ahead in Ruby / Java / > Python world. > > > > BUT IMHO can be a real cool neaty great platform for TDD because we have: > dynamic development. > > > > What I think we miss: > > - put a Mock framework in PharoCore - Mocks should be a standard tool > even for low-level stuff > > - introduce pragmas to declare tests / setUp / tearDown methods so I can > write > > > > AddressBookWithLaurentAndDennis>>createAddressBook > > <setUpTest> > > bla bla > > > > AddressBookWithLaurentAndDennis>>shouldHaveNumberOfContactsAnswersTwo > > <test> > > blabla > > > > > AddressBookWithLaurentAndDennis>>ifDennisRemovedNumberOfContactsShouldAnswersOne > > <test> > > bla bla > > > > > > > > - (harder) interface to / creation of an executable requirements / BDD > framework like Cucumber http://cukes.info/ > > > > Laurent > > > > > > On Wed, Nov 24, 2010 at 4:31 AM, Dennis Schetinin <[email protected]> > wrote: > > As for me, I'm simply unable to establish smooth test-driven process > without Mocks. I think it does not depend on language at all. > > > > Without mocks I have to divide the task I have into smaller independent > parts. It's actually an up-front design. I can make a mistake (I usually > do); even worse it's often just impossible to accomplish because too many > subcomponents usually interact thoroughly and I simply don't know which one > to implement first :). So, without mocks I have to code bottom-up, from > details to general. This is unnatural and error-prone. > > > > With mocks I can start directly from the task I have. I get a use case > and write a test for the one. Creating the test I detect subcomponents > needed, understand how they should interact and document that in the same > test. As those subcomponents do not exist yet, I have to specify them and > their behavior right in the test (if I don't want to break the process I've > just started). That's why I really need mocks. Then I can take another use > case or implement one of the mocks I used as a real object and so on. Thus, > mocks allow me to go top-down and implement only the things I really need, > not the things I think I'll need. > > > > Are there other, maybe better, approaches? > > > > Concerning TDD popularity… I'm not sure TDD plays the role it should in > Smalltalk community. > > > > Messing with Smalltalk for about 7–8 years, I can't say I often see real > TDD code. About 50–70% (depending on Smalltalk dialect) of frameworks I use > have no tests at all. The rest often looks being tested a posteriori. > Perhaps, Pharo is the only exclusion… > > > > And if TDD is really popular and widely used, why do we have so much > regression bugs even in core subsystems even in commercial Smalltalks? > > > > Please, correct me if I'm wrong. > > > > 2010/11/23 laurent laffont <[email protected]> > > > > On Tue, Nov 23, 2010 at 5:39 PM, Luc Fabresse <[email protected]> > wrote: > > Hi Dennis, > > > > Yes, TDD is highly popular and encouraged in the Smalltalk community. > > And mocks are not necessary in most cases. > > > > > > Hi Luc, > > > > why Mocks are less necessary in Smalltalk than in other > (Ruby/Python/whatever...) languages ? Do you have some examples / link ? > > > > Sometimes I think a mocking library should be in PharoCore so I don't > need to write my own mocks..... > > > > > > Cheers, > > > > Laurent > > > > > > > > > > #Luc > > > > > > 2010/11/23 Dennis Schetinin <[email protected]> > > > > How is it compared to Mocketry ( > http://www.squeaksource.com/Mocketry.html)? SMock? > > > > BTW, isn't TDD without mocks a bit incomplete? And is TDD popular among > smalltalkers actually? > > > > 2010/11/22 Mariano Martinez Peck <[email protected]> > > > > This is cool Anindya. I don't need mocks right now, but I will keep it in > mind! > > > > I cc'ed Pharo-dev mailing list. > > > > Cheers > > > > Mariano > > > > ---------- Forwarded message ---------- > > From: Anindya Haldar <[email protected]> > > Date: Mon, Nov 22, 2010 at 10:11 AM > > Subject: [Pharo-users] TestMock: a full featured mock testing framework > now available in SqueakSource > > To: [email protected] > > > > > > Dear Pharoers, > > > > TestMcok is a full featured mock based test framework that I am very glad > to contribute to the community. It is in squeaksource under the project name > TestMock. Please feel free to try it, and feedback will be greatly > appreciated. The wiki section includes a brief how-to guide with code > examples. > > > > Regards, > > Anindya Haldar > > > > > > > > > > _______________________________________________ > > Pharo-users mailing list > > [email protected] > > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-users > > > > > > > > > > > > -- > > Dennis Schetinin > > > > > > > > > > > > -- > > Dennis Schetinin > > > > -- > www.tudorgirba.com > > "In a world where everything is moving ever faster, > one might have better chances to win by moving slower." > > > > > -- Dennis Schetinin
