Jmeter之二_JSR223取样器,断言等添加失败的解决办法

jmeter,之二,jsr223,取样器,断言,添加,失败,解决办法 · 浏览次数 : 129

小编点评

**解决JSR223取样器错误的步骤:** 1. **分析错误信息:**仔细阅读错误信息 `java.lang.NoClassDefFoundError: Could not initialize class org.apache.jmeter.assertions.JSR223AssertionBeanInfo`,确定其源于哪种jar包。 2. **移除最新下班的jar包:**尝试移除最近下班的一半的jar包,并重新启动 JMeter。如果问题解决,则可能与该jar包相关。 3. **折半测试:**尝试移除和重新添加 JSR223的相关jar包,直到问题消失。 4. **确认jar包命名空间问题:**检查 `ApacheJmeter_Schema_Assertion-1.1.0.jar` 的命名空间是否与其他jar包冲突。 5. **使用折半法确认:**使用折半法,移除部分jar包,并尝试再次执行测试。如果问题解决,则可能因为jar包命名空间的问题。 6. **检查脚本语言选择:**确保你选择适合的脚本语言,例如Groovy、JavaScript等。 7. **进行充分的测试:**在编写脚本逻辑之前,请进行充分的测试和验证。

正文

Jmeter之二_JSR223取样器,断言等添加失败的解决办法


背景

最近在学习jmeter 但是发现在进行JSR223的相关取样器以及断言处理时出现了错误:

java.lang.NoClassDefFoundError: 
Could not initialize class org.apache.jmeter.assertions.JSR223AssertionBeanInfo

错误信息如下图. 一直有点懵逼. 网上搜了很多资料也没有找到方法. 自己废了较大的力气才解决掉. 

错误图

image


问题解决的思路与方式方法

在其他目录下重新解压缩了一下 jmeter 的介质
直接打开 jmeter.bat 然后 新建->线程组->添加 JSR223的相关取样器等. 
发现是可以的

最近两天唯一进行处理的是, 新增加了部分 扩展jar 
怀疑是最近扩展导致的问题. 
最简单的办法是使用折半法去确认. 

我移除了最新下班的一半的jar包, 再次重启发现还是存在同样的错误信息. 

然后急促进行折半, 发现移除这个jar包后问题没有了:
ApacheJmeter_Schema_Assertion-1.1.0.jar

所以初步怀疑是这个jar包的命名空间出现了问题. 

关于JSR223的理解

JSR223取样器(JSR223 Sampler)是JMeter中的一个重要组件,用于执行自定义的脚本代码来进行测试。JSR223代表Java Specification Request 223,是一个允许在Java虚拟机上运行其他脚本语言的规范。

JSR223取样器提供了许多脚本语言的支持,包括JavaScript、Groovy、Jython、Beanshell等。你可以选择使用其中任意一种脚本语言编写测试逻辑,然后在JSR223取样器中执行该脚本。

使用JSR223取样器,你可以以灵活的方式执行一些定制的测试逻辑,例如自定义请求发送、处理响应、计算指标、数据处理等。你可以通过引用JMeter提供的各种等效变量和方法,对请求和响应进行操作,并获取有关测试执行细节的信息。

以下是使用JSR223取样器的一般步骤:

在JMeter中添加JSR223取样器到测试计划中。
在JSR223取样器的属性中选择要使用的脚本语言(如Groovy、JavaScript等)。
在脚本编辑器中编写测试逻辑代码。
在代码中使用变量和方法来访问请求和响应数据,以及执行其他操作。
运行测试计划,JSR223取样器将按照设定的代码逻辑执行,并记录相应的结果。
请注意,使用JSR223取样器时应谨慎,因为错误的脚本代码可能会对测试结果产生负面影响。确保你对所选的脚本语言有一定的了解,并在开发脚本逻辑之前进行充分的测试和验证。

总体而言,JSR223取样器使你能够以自定义的方式扩展JMeter的功能,执行更复杂的测试场景,并满足个性化的测试需求。

关于jsr223 与 beanshell的区别与联系

JSR223和Beanshell是两个不同的概念,下面解释一下它们之间的区别:

JSR223:JSR223是Java规范请求223的缩写,它定义了一种在Java虚拟机上运行脚本语言的标准接口。JSR223规范允许在Java应用程序中使用各种脚本语言(如Groovy、JavaScript、Jython等)编写代码,并通过统一的接口进行执行。在JMeter中,JSR223取样器和JSR223前置处理器就是基于这个规范实现的,它允许使用不同的脚本语言来编写自定义的测试逻辑。

Beanshell:Beanshell是一种基于Java语法的开源脚本语言,它是JSR223规范中的一种实现。Beanshell与Java语法兼容,并且可以直接访问Java类和方法。在JMeter中,Beanshell可以作为一种脚本语言选择JSR223取样器或JSR223前置处理器。你可以使用Beanshell编写测试逻辑代码,并在JMeter中执行,对请求和响应进行操作。

所以,JSR223是一个规范,而Beanshell是符合这一规范的一种实现。除了Beanshell,JSR223还支持其他脚本语言,因此你可以通过选择适合你的需求的脚本语言来编写自定义的测试逻辑。例如,你可以选择使用Groovy、JavaScript等。在选择脚本语言时,可以考虑语言的特性、性能、开发者的熟悉程度等因素。

关于关注我的公众号一起学习进步

image

与Jmeter之二_JSR223取样器,断言等添加失败的解决办法相似的内容:

Jmeter之二_JSR223取样器,断言等添加失败的解决办法

# Jmeter之二_JSR223取样器,断言等添加失败的解决办法 ## 背景 ``` 最近在学习jmeter 但是发现在进行JSR223的相关取样器以及断言处理时出现了错误: java.lang.NoClassDefFoundError: Could not initialize class or

[转帖]Jmeter之界面语言设置

https://developer.aliyun.com/article/1173114#:~:text=%E6%B0%B8%E4%B9%85%E6%80%A7%E8%AE%BE%E7%BD%AE%EF%BC%9A%E8%AE%BE%E7%BD%AE%E5%90%8E%E6%AF%8F%E6%AC%

[转帖]jmeter之foreach循环控制器-03篇

上篇我们通过正则表达式获取到了一组数据,那么怎么来用呢?下面就用foreach控制器来使用结果,如下图所示 然后再foreach控制器里添加要循环的请求,我们模拟百度搜索,value填入${id} 然后运行测试,会发现请求循环执行了10次,每次的值都不一样

[转帖]jmeter之使用csv文件传递参数-05篇

csv文件格式,第一列为手机号,第二列为密码 1.右键添加一个配置元件 csv数据文件设置 2.设置csv数据提取路径 3.引用数据 4.设置线程循环运行两次,然后发送请求 看到结果就执行了两次,取得用户名和密码发生了变化

[转帖]jmeter之发送jdbc请求--06篇

1.setup线程组中新建一个JDBC Connection Configuration配置元件 2.设置配置信息 Database URL:jdbc:mysql://127.0.0.1:3306/vue_interface?useUnicode=true&characterEncoding=utf

[转帖]Jmeter之JDBC Request使用方法(oracle)

https://zhuanlan.zhihu.com/p/121747788 JDBC Request: 这个sampler可以向数据库发送一个jdbc请求(sql语句),它经常需要和JDBC Connection Configuration 配置元件一起配合使用。 目录: 一、准备工作 二、配置J

[转帖]正则表达式及在Jmeter中的应用

目录 1.正则表达式 1.1 什么是正则表达式 1.2 为什么使用正则表达式 2.语法 2.1 普通字符 2.2 限定符 2.3 非打印字符 2.4 特殊字符 2.5 定位符 2.6 修饰符(标记) 2.7 选择 2.8 运算符优先级 3.常用正则表达式及在线工具 4.Jmeter之正则表达式提取器

Jmeter学习之一_连接与测试Redis

# Jmeter学习之一_连接与测试Redis ## 简介 ``` 下载: https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.zip 注意事项: Don't use GUI mode for load testing !, onl

Jmeter学习之四_kingbaseV8R6数据库的简单验证

# Jmeter学习之四_kingbaseV8R6数据库的简单验证 ## 背景 ``` 周一没去报道, 因为我忘记体检了... 继续在家进行学习提高自己. jmeter周末时开始看的. 今天想着继续研究一下对数据库的处理 突然发现人大金仓的官方csdn有一个文档, 所以想着偷师,并且总结学习一下.

Jmeter学习之三_知识梳理

# Jmeter学习之三_知识梳理 ## 背景 ``` 简单学习了Jmeter的两个用例 感觉可以继续深入学习一下Jmeter了. 所以想着趁体检入职之前继续学习完善一下. 希望能够继续提高 ``` ## Jmeter的相关知识 ``` 1. 什么是Jmeter? ApacheJMeter ,是一个