Groovy getter / setter сокращенная запись и изменения API - PullRequest
0 голосов
/ 22 февраля 2012

Я унаследовал большое отличное приложение, основанное на API, написанном на Java.Groovy-приложение использует сокращенные методы получения и установки для вещей в API Java:

context.getItem().getValue().getNodeName().getText() [java]
context.item.value.nodeName.text [groovy]

API Java быстро разрабатывается и часто имеет изменения.

Это создает проблему, поскольку изменения вAPI Java не отображаются как ошибки в коде groovy при его компиляции;интеграционное тестирование становится бесполезным.Вместо этого они становятся исключениями времени выполнения.

Помимо модульного тестирования, есть ли какой-нибудь способ, которым я могу точно определить, где все эти методы getter и setter вызваны, или найти вещи, которые могут стать возможными ошибками?Как другие люди решают эту проблему?

Ответы [ 2 ]

3 голосов
/ 22 февраля 2012

Я не уверен, что вы подразумеваете под "интеграционным тестированием становится бесполезным", но да, как вы обнаружили, основное различие между статическими и динамическими языками заключается в том, что некоторые вещи, которые являются ошибками во время компиляции в статических языках, запускаютсяошибки в динамических языках.

Типичным решением действительно является более сильная зависимость от тестирования, как модульных, так и интеграционных тестов.По этой причине TDD (управляемый тестами дизайн) широко используется людьми, работающими с динамическими языками.

Единственное, что может помочь , - это Groovy ++, статически расширенное расширение языка Groovy.Смотри http://code.google.com/p/groovypptest/

1 голос
/ 22 февраля 2012

Как упомянул GreyBeardedGeek , тестирование очень поможет в этом отношении. На самом деле, я думаю, что чем тщательнее вы тестируете свое приложение, тем более уверенно вы будете относиться к тому, что ваши рефакторинги (или изменения API) ничего не нарушают, и это будет здорово:)

Однако, хороший инструмент тоже поможет. Intellij IDEA обладает потрясающими возможностями проверки и рефакторинга кода Groovy. Он делает очень хорошую работу по выводу типов выражений, поэтому в большинстве случаев рефакторинг будет выполнять Just Work ™.

...