… :) One more thing on the topic I've just remembered: a test shouldn't be just a method in a "test-case" class; test should be a separate alive object with its own state and probably extendable behavior… preferably a visible object that can be manipulated directly…
Regarding this, I think SUnit was just a very first approach to a good TDD framework and should be rethought deeply (re-invented?)… but I don't know if someone ever tried to do that, everyone seems to be satisfied with test as methods approach. -- Best regards, Dennis Schetinin 2013/6/6 Dennis Schetinin <[email protected]> > … I've forgot to explicitly mention that TDD-ing in Pharo I spent most of > time in debugger and inspectors: I see live objects there, I can > investigate and find roots of troubles, I code there… That's why TDD is > most productive in Smalltalk environment for me, and another reason why I > think a good debugger (in an alive environment) doesn't make TDD > unnecessary (or inversely) but rather complement and empower each other. > > > -- > > Best regards, > > > Dennis Schetinin > > > 2013/6/6 Dennis Schetinin <[email protected]> > >> I didn't mean to start a big discussion so I'm not ready to state or >> develop my vision right now fully and logically… But let's try to start >> little-by-little. >> >> Considering Pharo as an example… there are few minor issues like lack of >> some code-producing features in debugger… the one I can remember right now >> is lack of code formatting there, but there are few more. Fixing such >> issues would be a first step towards TDD-oriented environment. >> >> Next steps would be about some more serious improvements: Test Runner >> improvements, auto-test running (it's already is implemented I think?), >> test annotations (expressing ideas behind every tests, relations between >> them, etc.), better test navigation and, perhaps, a "TDD-oriented" browser. >> Then, there should be introspection tools that for example silently save >> all the history and allow to review, analyze the development process >> regarding the idea-test-implementation triplets… >> >> …Sure, I rather have a "feeling" of the TDD-oriented environment then a >> good proposal right now. The feeling grows to something almost reasonable >> when I code, but I didn't have such chance for few months already, so I'm >> kinda caught off base :) >> >> -- >> >> Best regards, >> >> >> Dennis Schetinin >> >> >> 2013/6/6 Frank Shearar <[email protected]> >> >>> On 6 June 2013 14:44, Dennis Schetinin <[email protected]> wrote: >>> > TDD is not about tests (as a bug-finding/debugger tool) at all. And the >>> > anti-regression feature of TDD is just the secondary one. >>> > >>> > First of all, TDD is about structuring thinking/creation process. And >>> "test" >>> > here is a tool that allows and makes developer to formalize >>> requirements and >>> > to translate them to the language they will be implemented in. This >>> starts >>> > and really drives coding. Thus, a programmer that really masters TDD >>> (really >>> > means an ability to apply "pure" TDD for all programming activities: >>> both >>> > top-down and bottom-up design activities) is expected to produce much >>> better >>> > architecture/design/code. >>> > >>> > … So, I don't think TDD is somehow obsolete by Smalltalk. Vice versa, >>> TDD >>> > should be really efficient here. And it's a great pity TDD is not >>> actually >>> > popular in Smalltalk society. One of the dire consequences is that >>> modern >>> > Smalltalk environments are not "TDD-oriented" and don't advantage from >>> good >>> > TDD methodology. >>> >>> Why do you think Smalltalk environments aren't "TDD oriented"? What >>> would an IDE need to be TDD oriented? (I can think of something like >>> Ruby's guard, which runs tests every time you save a file.) >>> >>> frank >>> >>> >> >
