Groovy核心语法指南
什么是Groovy语言?
Groovy是一门运行于Java虚拟机上的动态语言,融合了Python、Ruby和Smalltalk等语言的优势。该语言与Java具有良好的互操作性,能够直接调用Java类库,并支持对现有应用进行扩展开发。
Groovy在测试场景的应用
在自动化测试中,Groovy常被用来处理接口请求前后的数据转换任务,如各类加密算法的实现:
- MD5摘要计算示例:
'Hello 测试'.md5()
'Hello World'.bytes.md5()
DigestUtils.md5Hex('Hello 测试')
- Base64编码解码示例:
'Hello 测试'.bytes.encodeBase64().toString()
new String('SGVsbG8gV29ybGQ='.decodeBase64())
- SHA-256哈希计算示例:
'Hello 测试'.sha256()
'Hello World'.bytes.sha256()
DigestUtils.sha256Hex('Hello 测试')
基本语法规则
注释形式
- 单行注释:
// 注释内容 - 块级注释:
/* 多行注释 */ - 文档注释:
/** 文档说明 */ - Shebang声明(脚本入口标识):
#!/usr/bin/env groovy
println "Hello from the shebang line"
保留关键字

字符串类型
-
单引号字符串:创建的是普通
java.lang.String对象,内部不解析表达式。 -
双引号字符串:若不含插值表达式,则仍为
java.lang.String;若含插值表达式,则为groovy.lang.GString类型。class Example { static void main(String[] args) { def language = 'Groovy' def message = "Welcome to ${language}" println(message) } static String generateMessage() { def lang = 'Groovy' return "Welcome to ${lang}" } } -
三重双引号字符串:支持多行文本并允许插值。
static void main(String[] args) { def framework = 'Spring Boot' def multilineMsg = """ 欢迎使用 ${framework}, 它基于 ${framework} 构建。 """ println(multilineMsg) }
List集合操作
Groovy采用[]定义列表,默认类型为java.util.ArrayList。列表内元素可为不同数据类型。
static void main(String[] args) {
def items = [10, "text", false]
for (int index = 0; index < items.size(); index++) {
print(items[index])
}
}
常用操作包括索引访问、负数索引、范围截取以及追加元素:
def chars = ['x', 'y', 'z', 'w']
assert chars[0] == 'x'
assert chars[-1] == 'w'
chars[2] = 'Z'
chars << 'v'
assert chars[1, 3] == ['y', 'w']
assert chars[1..3] == ['y', 'Z', 'w']
数组(Array)
数组声明需显式指定类型或使用as关键字转换:
String[] languages = ['Java', 'Kotlin', 'Scala']
assert languages instanceof String[]
assert !(languages instanceof List)
def numbers = [1, 2, 3] as int[]
assert numbers instanceof int[]
assert numbers.length == 3
//二维数组示例
def grid = new Integer[2][2]
grid = [[1, 2], [3, 4]]
assert grid instanceof Integer[][]
注意:Groovy不兼容Java风格的数组初始化语法。
映射(Map)
Map结构同样由[]包裹,键值对格式为key: value,默认实现为java.util.LinkedHashMap:
static void main(String[] args) {
def techStack = [backend: 'Node.js', frontend: 'React', database: 'MongoDB']
println(techStack.backend)
}
开发者可在熟悉Java的基础上快速掌握Groovy的数据封装与传输机制。
以下是一个简单的参数提取示例:
