Groovy getter / setter简写符号和API更改

时间:2012-02-21 22:23:22

标签: java groovy integration getter-setter

我继承了一个依赖于用Java编写的API的大型groovy应用程序。 groovy应用程序在Java API中使用简写的getter和setter方法:

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

Java API正在迅速发展并且经常发生变化。

这会带来一个问题,因为Java API中的更改在编译时不会在groovy代码中显示为错误;集成测试变得无用。相反,它们成为运行时异常。

除了单元测试之外,有什么方法可以确定调用所有这些getter和setter方法的位置,或找到可能出现错误的内容?其他人如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

我不确定你的意思是“集成测试变得无用”, 但是,正如您所发现的,静态语言和动态语言之间的主要区别在于,静态语言中的某些编译时错误会成为动态语言中的运行时错误。

典型的解决方案确实更依赖于测试,包括单元测试和集成测试。出于这个原因,使用动态语言的人们大量采用TDD(测试驱动设计)。

可能帮助的一件事是“Groovy ++”,这是Groovy语言的静态类型扩展。见http://code.google.com/p/groovypptest/

答案 1 :(得分:1)

作为GreyBeardedGeek mentioned,测试在这方面会有很大帮助。事实上,我认为你对应用程序进行的测试越彻底,你对重构(或API更改)的信心就越大,不会破坏任何东西,它会感觉很棒:)

然而,好的工具也会有所帮助。 Intellij IDEA具有一些非常棒的Groovy代码检查/重构功能。它在推断表达式的类型方面做得很好,所以大多数时候重构都是Just Work™。