Предположим, что один предпочитает структуру тестирования функционального стиля (например, спецификации) и не нравится те, которые являются отраслевым стандартом для Java (например, JUnit). Является ли хорошей практикой иметь проект Java с тестами unit/integration, написанными только в scala (и остальными проектами, написанными в java)? Существуют ли какие-либо недостатки такого подхода?Смешивание java и scala в одном проекте - тесты в scala, core в java
ответ
У меня есть опыт в этом, мы использовали это раньше.
Недостатки:
Scala знания: Для точки зрения разработчика, они не узнают слишком много, если они только пишут SCALA код для проверки, потому что некоторые других функции Scala, как неявный, уровень типа программирование и т. д. не будет хорошо б/у.
Тип преобразования: Преобразование типа очень раздражает. Почти вся коллекция Java изменена, как ArrayList, HashMap и т. Д., Но Scala Seq, List, Map, она будет импортирована как неизменная коллекция, поэтому вам нужно все время их конвертировать с помощью Scala.collection.JavaConversion._ , Не говоря уже о том, что другой тип, например BigDecimal в java, вам также нужно его преобразовать.
Slow сборник: Если вы используете Specs2, он может относительно увеличить время компиляции, лично я думаю, что он может использовать неявный слишком много, каждый метод испытания должен вернуть MatchResult, этот тип подразумевается неявным образом. Если вы пишете тест без какого-либо совпадения, вы можете увидеть неявную не найденную ошибку. Во всяком случае, компиляция может занять много времени.
Отсутствие поддержки IDE, чтобы сделать TDD, я использую IntelliJ 13 Ultimate Edition, в Java, мне нравится делать TDD и это быстро, но в тесте Scala, он не поддерживает это очень хорошо, альт + ввести оленья кожа дать мне слишком много полезных опций
Dont пытаются смешивать импорт Java и Scala код, так что сейчас в проекте, Scala код с помощью Java-кода в тестовом пакете, если некоторые импорта тестового кода Java Scala, можно смутить IDE. Intellij недостаточно умен, чтобы скомпилировать первый. У нас есть эта проблема, мы просто вручную компилируем тестовый код Scala, а затем строим проект, но это немного расстраивает.
Я не большой поклонник только с помощью Scala для тестирования. Scala - удивительный язык, предоставляющий так много возможностей, чтобы вы могли написать выразительный и элегантный код.
Несколько предложений за попытку использовать Scala на основном проекте Java (может от темы)
Microservice: Насколько я знаю, мои друзья из основного проекта Java используют microservice в качестве решения для записи Scala-код поверх Java. Однако в некоторых сценариях это может увеличить ненужные затраты на техническое обслуживание.
Jar: вы также можете отделить его, создав проект Scala, а затем упаковать банку, опубликовать в своей компании Nexus, а затем импортировать ее в свой проект Java. Я думаю, что это чистое решение, потому что они оба сидят на вершине JVM, и Dev не будет жаловаться на проблему компиляции.
Я думаю, что другие люди могут иметь подобный опыт, а также, я надеюсь, что смогу узнать его :)
Я сделал это в нескольких проектах, например. используя Spock (groovy), scala-test. Это довольно эффективный способ оценивать, учиться и играть с новыми языками программирования.
Есть ли недостатки? Если ваша команда использует непрерывную интеграцию, возможно, вам нужно потратить некоторое время, чтобы настроить Maven/Gradle, чтобы включить ваши тесты и другие конфигурации, чтобы CI мог ее построить.
Технически это возможно сделать это, но я не думаю, что это правильный путь. Если ваша команда знает/желает изучить scala, тогда они, вероятно, захотят написать весь код в scala, а не только тесты (или, по крайней мере, сделать это для нового кода).
Если команда не знает scala, кривая обучения высока, и поскольку тесты обычно ограничены, они не будут многому научиться у нее.
Если вы пытаетесь прокрасться с помощью тестов scala, вы можете получить обратный эффект.
Есть проблемы с scala (например, сильная поддержка IDE, длинные компиляции, интеграция с сторонними инструментами и т. Д.). ИМХО, стоит заплатить, когда вы развиваетесь в scala, но не ограничены для тестов.
Если вы хотите более функциональный способ написать свои тесты, я рекомендую вам использовать Spock. Это очень хорошая среда тестирования и спецификации Java и Groovy. Поскольку groovy намеревается быть знакомым разработчикам java, они могут чувствовать себя более комфортно с его помощью.
Я начал использовать его раньше, но затем переписал все приложение в scala :)
- 1. Смешивание java, scala и xtend файлов в одном проекте?
- 2. Смешивание AspectJ и Scala в проекте Eclipse
- 3. Смешивание файлов Scala и Java в проекте Eclipse
- 4. Scala и Java в том же проекте
- 5. Scala и Clojure как в одном проекте
- 6. Maven: смешение Java и Scala в одном проекте
- 7. Смешивание Scala и Java на Wicket
- 8. Scala в Java
- 9. Преобразование java в scala
- 10. Java Reflection в Scala
- 11. Java IO в Scala
- 12. Преобразование Java в Scala
- 13. поддержка Scala в Maven проекте
- 14. ScalaTest в проекте Java Eclipse
- 15. Смешивание JavaScript и Scala в шаблоне игры
- 16. Play Framework: Смешивание контроллера Java и Scala/views
- 17. Scala и Java BigDecimal
- 18. Scala - смешивание пакетов и переменных?
- 19. Разница в RoundingMode.HALF_UP в scala и Java
- 20. Scala, Java и равенство
- 21. Подкаталоги Scala/Java с точками в именах
- 22. Использование констант Scala в Java
- 23. Web выскабливание в Java/Scala
- 24. Reuse java connectionpool в scala
- 25. Scala в java-коде: $ colon
- 26. Преобразование цикл Java в Scala
- 27. "Lambdifying" Scala Функция в Java
- 28. Использование scala map в Java
- 29. Передача массива Java в Scala
- 30. Элементарная графика в java/scala
Если ваша команда готова, зайдите на него. –
Большинство проблем с применением Scala/Java возникают при переходе Java-> Scala. Scala-> Java довольно безупречна. –