首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMETER -尝试使用beanshell测试货币价值

JMETER -尝试使用beanshell测试货币价值
EN

Stack Overflow用户
提问于 2018-01-27 03:10:47
回答 2查看 365关注 0票数 0

我正在尝试使用beanshell断言执行测试。我有一个csv文件与预期的金额都是2个小数位,例如145.16,1945.21等,我希望比较它们的实际值,将从我的采样器http响应返回相同的格式。如果两者之间的差值小于0.1,即10美分/便士等,我希望我的测试用例能够通过。

我首先将初始字符串值解析为双精度、浮点数或短整型,并使用Math.abs进行比较,但当然精度并不在那里,例如,如果差值实际上是10美分(失败),那么计算结果实际上是0.999999765或类似的,因此测试用例将错误地通过。

我现在已经转到BigDecimal上了,但收效甚微。我尝试使用setScale,这使得比较更加准确。

所以我的问题是BigDecimal the way to go?创建BigDecimal后,我该如何处理它-如果我将其转换为short或float等,我又会遇到同样的问题。DecimalFormat会有帮助吗?我需要在我使用Math.abs的地方有两个小数点的值--有Math.abs的替代方案吗?

希望这是有意义的,并提前感谢。

EN

回答 2

Stack Overflow用户

发布于 2018-01-29 14:22:21

  1. BigDecimal是一个很好的候选者,至少所有设计用于货币对象的解决方案都在幕后使用BigDecimal。您可能会发现ROUND_HALF_EVEN属性对
    1. 很有用。请注意,Joda-Money库提供了Money.isGreaterThan()方法,可以用来代替自定义逻辑。
    2. JMeter 3.1 it is recommended to use JSR223 Test Elements and Groovy language for any form of scripting开始,因此请考虑尽快切换到Groovy。
票数 0
EN

Stack Overflow用户

发布于 2018-02-01 21:38:58

仅供参考,这对我来说很管用-

代码语言:javascript
复制
import java.math.BigDecimal;

BigDecimal Actual_PAF = new BigDecimal("${Actual_PAF}");
BigDecimal Expected_PAF = new BigDecimal("${Expected_PAF}");

BigDecimal ActualPAFDifference = new 
BigDecimal(Actual_PAF.subtract(Expected_PAF).toString());

if (ActualPAFDifference.abs() < 0.001)

{ Failure=false;
  vars.put("PAFPassOrFail","PASS");}

else 
{ Failure=true;
vars.put("PAFPassOrFail","FAIL");
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48468019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档