изучать Scala с TDD

Сейчас изучаю Scala. Я видел там 2 тестовых фреймворка: ScalaTest и Specs. Моя единственная проблема в том, что я все еще не могу решить, какой из языков лучше. Также я привык писать тесты перед кодом, на данный момент я не имею четкого представления, как это делать в функциональном программировании. В идеале я бы хотел изучить Scala в стиле TDD, есть ли какие-нибудь ресурсы по этому поводу?


person Uberto    schedule 16.11.2010    source источник


Ответы (3)


Есть функциональный коан, который вы, возможно, ищете. Дик Уолл из Java Posse начал проект на github:

https://github.com/relevance/functional-koans/tree/scala

Вам нужен maven, чтобы запустить его через mvn package.


Есть еще один Коан:

http://www.scalakoans.org/

Спасибо @MikeHoss!

person michael.kebe    schedule 16.11.2010
comment
@uberto, насколько я понимаю, «функциональные коаны» - это упражнения, которые вы можете выполнять для изучения функционального программирования, при которых вам дают неудачный тест, и вы должны его пройти. Правильно, Майкл? - person Grant Crofton; 16.11.2010
comment
Ага, правильно. Есть настройка проекта с кучей юнит-тестов. Чтобы добиться прогресса, вам нужно изменить модульный тест, который в настоящее время не работает, чтобы он прошел. Тогда следующий тест не удастся, и вам нужно будет узнать что-то новое. Первый модульный тест тривиален: assert(false) // should be true - person michael.kebe; 17.11.2010
comment
очень интересно! Я попытаюсь! - person Uberto; 20.11.2010

Итак, тестовые фреймворки. Есть другие вопросы по этому поводу , хотя я хотел бы отметить, что существует также ScalaCheck. ScalaCheck не так полон функций, как Specs и ScalaTest, но, с другой стороны, оба Specs и ScalaTest могут интегрироваться с ним.

Лично я бы предпочел ScalaCheck, который, вероятно, сильно отличается от привычных вам фреймворков для модульного тестирования. Эта разница может помочь вам не создавать тесты в объектно-ориентированной манере.

Теперь, к основной проблеме вашего вопроса: существует ли учебник по Scala в стиле TDD? Я ничего не знаю, хотя ответ о функциональные коаны, похоже, подходят для того, что вы хотите.

person Daniel C. Sobral    schedule 16.11.2010
comment
Я обнаружил, что scalacheck более полезен для низкоуровневой перестановки алгоритмов и отдельных модулей, но не так полезен для BDD и высокоуровневых спецификаций. - person Kevin Wright; 16.11.2010
comment
@Kevin Значит, ты неправильно строишь генераторы! :-) - person Daniel C. Sobral; 16.11.2010

ScalaTest - это более многофункциональная и гибкая из двух сред.

Сказав это ... В настоящее время я отдаю предпочтение спецификациям, они, кажется, гораздо лучше справляются с последними выпусками Scala, и интеграция с IntelliJ также работает лучше.

У спецификаций также есть преимущество, заключающееся в том, что вам нужно изучить меньший API.

person Kevin Wright    schedule 16.11.2010
comment
Сразу после выхода 2.8 был выпущен окончательный вариант ScalaTest 1.2, который отлично работает со Scala 2.8. Кевин почему-то не знал, что ScalaTest 1.2 работает со Scala 2.8. ScalaTest 1.3, который также работает со Scala 2.8, является текущим выпуском по состоянию на 20 марта 2011 г. - person Bill Venners; 20.03.2011
comment
В то время, когда я писал этот ответ, я недавно работал с множеством кандидатов на выпуск версии 2.8, спецификации которых очень внимательно отслеживались. Я до сих пор вспоминаю разочарование из-за невозможности обновить проект просто из-за зависимости ScalaTest. С тех пор ScalaTest начал отслеживать свои собственные зависимости через Maven, поэтому быстрые выпуски должны быть возможны, и я не вижу, чтобы это повлияло на меня в будущем (полезно знать, поскольку 2.9.0 собирается стать кандидатом на выпуск) - person Kevin Wright; 21.03.2011