性能测试-groovy语言1
课程:B站大学
记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师
Jmeter之Groovy语言
- Groovy简介
- 为何性能测试中选择Groovy
- windows下载Groovy
- 进入官网
- 配置环境变量
- Groovy的数据类型
- groovy的保留字
- 字符串
- 1. 单引号字符串 (Single-quoted strings)
- 双引号字符串 (Double-quoted strings)
- 三引号字符串 (Triple-quoted strings)
- 字符串插值 (String interpolation)
- 数值类型
- byte 字节型
- char 字符型
- short 短整型
- int 整型
- long 长整型
- java.math.BigInteger 无限精度型
- 小数型
- double(双精度浮点型)
- java.math.BigDecimal(高精度小数)
- 类型自动转换示例
- 不同类型数值进行算术运算的规则
Groovy简介
roovy 是一种基于 JVM(Java 虚拟机)的动态/静态混合编程语言,语法与 Java 高度兼容,同时融合了脚本语言的灵活性和现代语言特性(如闭包、元编程等)。
为何性能测试中选择Groovy
Groovy在性能测试中因兼具接近Java的执行效率(尤其静态编译时)与脚本化的高效开发能力,可快速构建灵活的测试逻辑,尤其适合复杂场景的自动化验证。
知识点:Groovy易于掌握,动态语言,运行速度快,兼容java
windows下载Groovy
进入官网
进入:https://groovy.apache.org/download.html
点击download下载,下载完成后解压文件
配置环境变量
打开Window下环境变量设置窗口,新建一个名为GROOVY HOME的环境变量,变量的值是解压后Groovy sdk的目录
path变量
验证:环境变量配置成功
安装完成后,在bin目录下有一个GroovyConsole.bat文件,双击打开,可以在里面编写并执行Groovy程序。
这里我用groovy自带的编译器,其实用idea会方便一些。
这里我选择用idea创建项目,会方便很多。
Groovy约等于java,且更加简洁。
Groovy的数据类型
groovy的保留字
abstract | assert | break | case |
---|---|---|---|
catch | class | const | continue |
def | default | do | else |
enum | extends | final | finally |
for | goto | if | implements |
import | instanceof | interface | native |
new | null | non-sealed | package |
public | protected | private | return |
static | strictfp | super | switch |
synchronized | this | threadsafe | throw |
throws | transient | try | while |
字符串
Groovy提供了多种灵活的字符串表示方式,比Java更加简洁和强大。以下是Groovy中字符串的主要类型和使用方法:
1. 单引号字符串 (Single-quoted strings)
- 最简单的字符串表示方式
- 不支持插值和转义字符(除
\
本身) - 类似于Java的字符串
def str1 = 'Hello World'
println str1 // 输出: Hello World
双引号字符串 (Double-quoted strings)
- 支持字符串插值(String interpolation)
- 支持转义字符
- 如果字符串不包含插值表达式,则与单引号字符串相同
def name = "Groovy"
def str2 = "Hello ${name}" // 字符串插值
println str2 // 输出: Hello Groovydef path = "C:\\Program Files\\Groovy"
println path // 输出: C:\Program Files\Groovy
三引号字符串 (Triple-quoted strings)
- 支持多行字符串
- 保留字符串中的换行和缩进
- 双三引号支持插值,单三引号不支持
// 单三引号(不支持插值)
def str3 = '''Line 1
Line 2
Line 3'''
println str3// 双三引号(支持插值)
def user = "张三"
def str4 = """用户: ${user}
年龄: 25"""
println str4
字符串插值 (String interpolation)
- 只在双引号和双三引号字符串中有效
- 使用${expression}语法
- 可以包含任意Groovy表达式
def a = 10
def b = 20
def str5 = "a + b = ${a + b}"
println str5 // 输出: a + b = 30def date = new Date()
def str6 = "当前时间: ${date.format('yyyy-MM-dd')}"
println str6
总结:
字符串名称 | 语法 | 是否可以混用 | 是否多行 | 转义字符 |
---|---|---|---|---|
单引号的 | '...' | ❌ | ❌ | \ |
三个单引号的 | '''...''' | ❌ | ✔️ | \ |
双引号的 | "..." | ✔️ | ❌ | \ |
三个双引号的 | """...""" | ✔️ | ✔️ | \ |
斜线的 | /.../ | ✔️ | ✔️ | \ |
数值类型
Groovy的数值型包括整数型(Integer)和小数型(decimal)两种,整型又包括以下几种:
byte 字节型
byte b = 127 // byte 范围: -128 到 127
println "byte 值: ${b}, 类型: ${b.getClass().name}"
char 字符型
byte b = 127 // byte 范围: -128 到 127
println "byte 值: ${b}, 类型: ${b.getClass().name}"
short 短整型
short s = 32767 // short 范围: -32768 到 32767
println "short 值: ${s}, 类型: ${s.getClass().name}"
int 整型
int i = 2147483647 // int 范围: -2^31 到 2^31-1
println "int 值: ${i}, 类型: ${i.getClass().name}"
long 长整型
long l = 9223372036854775807L // long 范围: -2^63 到 2^63-1,需加 'L' 后缀
println "long 值: ${l}, 类型: ${l.getClass().name}"
java.math.BigInteger 无限精度型
import java.math.BigInteger
BigInteger bi = new BigInteger("123456789012345678901234567890")
println "BigInteger 值: ${bi}, 类型: ${bi.getClass().name}"
小数型
double(双精度浮点型)
double d = 3.141592653589793 // double 是默认的浮点类型
println "double 值: ${d}, 类型: ${d.getClass().name}"
java.math.BigDecimal(高精度小数)
import java.math.BigDecimalBigDecimal bd = new BigDecimal("123.45678901234567890")
println "BigDecimal 值: ${bd}, 类型: ${bd.getClass().name}"
类型自动转换示例
int intValue = 100
long longValue = intValue // int 自动转换为 long
println "int -> long: ${longValue}, 类型: ${longValue.getClass().name}"double doubleValue = longValue // long 自动转换为 double
println "long -> double: ${doubleValue}, 类型: ${doubleValue.getClass().name}"
不同类型数值进行算术运算的规则
对于二元运算符,两个不同类型的数值进行运算后它们的结果按照以下规则确定:
- 对于byte、char、short、int这几种类型之间运算的结果为int。
- 涉及long与byte、char、short、int之间运算的结果为long。
- 涉及BigInteger与其它类型数值之间的运算结果为BigInteger。
- BigDecimal与byte、char、short、int之间的运算结果为BigDecimal。
- float、double与BigDecimal之间的运算结果为double。
- 两个BigDecimal之间的运算结果为BigDecimal。