⦠:) 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 <chaetal@gmail.com>
⦠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 <chaetal@gmail.com>
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 <frank.shearar@gmail.com>
On 6 June 2013 14:44, Dennis Schetinin <chaetal@gmail.com> 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