import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.junit.Assert;
import org.junit.Test;
import bsh.Interpreter;
import bsh.NameSpace;
import bsh.Primitive;
import bsh.UtilEvalError;
import bsh.Variable;
public class BeanShellTest {
@Test
public void testDynamicVar() throws Exception {
Interpreter inter = new Interpreter();
inter.setNameSpace(new NameSpaceWarp(inter.getNameSpace(),
"mynamespace"));
Object re = inter.eval("A999=A001+A002;");
System.out.println(re);
Assert.assertEquals(300, re);
}
@Test
public void testPrimitive() throws Exception {
Interpreter inter = new Interpreter();
inter.set("SZGC0000", new Integer(109));
inter.set("SZGA1000", new Integer(6));
inter.set("SZGG1000", new Integer(0));
inter.set("SZGK1000", new Integer(0));
inter.set("SZGC0300", new Integer(103));
Object vvv = inter
.eval("SZGC0000==SZGA1000+SZGG1000+SZGK1000+SZGC0300;");
System.out.println("1====" + vvv);
Assert.assertFalse((Boolean) vvv);
inter.set("SZGC0000", 109);
inter.set("SZGA1000", 6);
inter.set("SZGG1000", 0);
inter.set("SZGK1000", 0);
inter.set("SZGC0300", 103);
vvv = inter.eval("SZGC0000==SZGA1000+SZGG1000+SZGK1000+SZGC0300;");
System.out.println("2======" + vvv);
Assert.assertTrue((Boolean) vvv);
}
static class NameSpaceWarp extends NameSpace {
private static final long serialVersionUID = 1L;
Map<String, Object> kpis;
public NameSpaceWarp(NameSpace ns, String name) {
super(ns, name);
kpis = Collections.synchronizedMap(new HashMap<String, Object>());
kpis.put("A001", 100);
kpis.put("A002", 200);
kpis.put("A003", 300);
}
@Override
protected Variable getVariableImpl(String name, boolean recurse)
throws UtilEvalError {
Variable var = super.getVariableImpl(name, recurse);
if (var == null && kpis.containsKey(name)) {
Object o = kpis.remove(name);
if (o == null) {
o = Primitive.NULL;
}
setVariable(name, o, false);
return super.getVariableImpl(name, recurse);
}
return var;
}
}
}
分享到:
相关推荐
在JMeter测试框架中,我们可以结合使用POI库和BeanShell组件来读取和写入Excel数据,以实现更复杂的测试场景。以下是对这个主题的详细讲解: 首先,Apache POI是一个开源的Java API,它提供了读取、写入和修改MS ...
请到...但不管怎样,如果你要让BeanShell与你的类与应用程序一起工作就必须将 BeanShell的jar文件加到classpath中。 你可以将BeanShell的jar 文件拖到JAVA_HOME的ext目录也可以直接加到classpath中。
在 Beanshell 中,你可以像编写普通Java程序一样定义类、方法和变量,但无需编译。只需将代码写入脚本文件或直接在Beanshell交互式环境中输入,然后立即执行。这使得它非常适合进行快速原型开发和实验性编程。 以下...
至于压缩包中的“beanshell”文件,这可能是BeanShell的库文件,包括JAR包和其他相关资源,用于在项目中引入和使用BeanShell。解压并导入这些文件到你的项目中,就可以开始利用BeanShell的强大功能了。 总的来说,...
在标签“beanshell”中,我们可以确认这个压缩包与 Beanshell 工具紧密相关,包含了 Beanshell 的核心功能和可能的使用示例。 在压缩包的文件名称列表中,我们看到了“META-INF”和“bsh”两个目录。`META-INF` 是...
将这个jar添加到你的Java项目的类路径中,就可以在程序中直接使用BeanShell的功能。例如,你可以通过Java代码动态执行BeanShell脚本,或者创建一个BeanShell的交互式会话。 4. **使用场景**:BeanShell 在多种情境...
`BeanShell学习.doc` 文件很可能是关于如何使用Beanshell的教程文档,可能包含了从基础到高级的使用示例,包括如何执行Java语句、如何使用 Beanshell API、以及如何与其他Java类库集成等。 至于`beanshell.jar` ...
然后,将该JAR文件添加到JMeter的lib目录下,使其可以在BeanShell脚本中使用。在BeanShell脚本中,可以通过`import`语句来引入自定义的加密库,如: ```java import com.yourpackage.EncryptionUtils; ``` 然后...
7. **嵌入到Java应用**:除了作为一个独立的脚本环境,BeanShell 还可以被嵌入到其他Java应用程序中,作为动态脚本引擎使用,比如用于配置、初始化或者扩展应用的行为。 在压缩包中,我们看到有以下文件: - `...
Beanshell 是一个轻量级的Java脚本引擎,它允许用户在运行时直接执行Java语法的脚本。...通过深入学习和使用这个压缩包中的资源,你可以熟练掌握Beanshell的使用,从而在项目中实现更多创新和便捷的解决方案。
【标题】: 使用BeanShell构建公式管理系统的实践 【描述】: 在复杂的企业级应用如SCM、CRM和ERP中,常常需要用户根据自身需求调整计算参数,以满足特定时期的业务规则。例如,商品折扣率、员工奖金计算等都需要动态...
【描述】:“本文将详细介绍JMeter的BeanShell组件,包括其使用场景、内置变量和方法,帮助读者掌握如何在接口测试中运用BeanShell进行脚本编写。” 【标签】:“BeanShell Jmeter 接口测试” 【正文】: ...
保存本地文件会把逐次请求的不同参数的结果分别保存。...BeanShell PostProcessor每次可以打开相同文件,在一个文件上 追加 写入 。可以实现存到同一文件中。 注意:保存结果到本地,也要创建***正则提取器***哦~~
例如,游戏开发者可能会使用它来实现自定义的游戏逻辑,或者在应用程序中提供可扩展的配置选项。 5. **类库访问**: Beanshell 脚本可以无缝地访问任何Java类库,包括Java标准库和第三方库。这意味着你可以利用已...
1. 安全性:由于BeanShell可以直接执行任意Java代码,因此在生产环境中使用时,必须小心处理输入,避免执行恶意代码。 2. 性能:虽然方便,但动态执行Java代码通常比预编译的Java代码慢,因此在性能敏感的应用中需...
6. **脚本扩展**:在应用程序中使用BeanShell,可以替代JAVA编译器动态调用脚本,便于快速实现或修改功能。 而Mozilla Rhino则是一个JavaScript解释器,它是用Java实现的,完全符合Ecma-262标准,使得JavaScript...
将这两个 JAR 文件加入到项目的类路径(classpath)中,就可以在Java程序中使用 Beanshell 和 BSF 来执行脚本。例如,你可以动态创建和执行Java类,进行条件判断,循环控制,调用Java对象的方法,甚至实现更复杂的...