Хорошо, несколько штук здесь.
Во-первых, я согласен с markusQ, хотя я полностью сочувствую: я предпочел бы написать свой код непосредственно в EMACS. Одна из особенностей Smalltalk заключается в том, что на самом деле это очень неумолимо для людей, которые не хотят делать то, что делает Smalltalk Way. В этом случае Smalltalk Way должен использовать браузеры.
Во-вторых, отчасти причина того, что это Smalltalk Way, заключается в том, что Smalltalk во многих отношениях не похож на другие языки. На самом деле, для всех практических целей, нет никакого способа сделать «отдельный» исполняемый файл Smalltalk: все, что вы можете сделать, это создать образ Smalltalk с добавлением нескольких относительно небольших фрагментов вашего собственного кода. Когда вы пишете код с использованием внешнего редактора Как и в показанном вами синтаксисе, вы буквально просто печатаете вручную формат импорта / экспорта, который легче набирать, чем XML. Но только немного.
Мораль в том, что делай это способом Smalltalk с браузерами.
Есть несколько довольно хороших уроков для Smalltalk. Я обычно использую Squeak, поэтому те, кого я видел, используют Squeak, как здесь .
На TDD вам повезло, потому что Smalltalk был первым, кто получил xUnit. Для Smalltalk он называется SUnit, и здесь есть хороший учебник .
Вы используете там утверждения, которые, по-видимому, в основном представляют собой подход «проектирование по контракту». Была проделана работа по добавлению дизайна по контракту в Smalltalk, как здесь . Для простых утверждений вы можете добавить код, как в этом вопросе .
assert: aBlock
"Throw an assertion error if aBlock does not evaluates to true."
aBlock value
ifFalse: [AssertionFailure signal: 'Assertion failed']