使用场景:
在Jmeter中BeanShell断言支持的语言是Java,在比较两个字符串是否相等的时候不能使用 ==
根据代码看一下 == 和 equals() 的实际区别
看图:第一个方法是使用 == 来判断两个字符串是否相等,执行的是else代码部分,那返回的是false,也就是判断的结果是不相等;
第二个方式是使用equals()判断两个字符串是否相等,执行了if的代码部分,返回的结果是true,也就是结果是相等的。
BeanShell 代码段:
import java.util.*;
int i =1;
int M = ${ItemName_#} ;
for (i=1; i <= M; i++){
String ItemName_Value = vars.get("ItemName_" + i);
String itemName_Value = vars.get("itemName_" + i);
if (ItemName_Value.equals(itemName_Value)){
log.info("pass");
}
else{
log.info("test failed");
}
}
总结:
Java 语言中,equals()比较的是对象的内容(区分字母的大小写格式),如果使用“== 比较两个对象时,比较的是两个对象的内存地址,所以不相等。即使它们内容相等,但是不同对象的内存地址也是不相同的。