- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
有一个特定的要求,我需要将 jmeter 中的 json 响应中的先前日期时间版本与更新的日期时间版本进行比较
以下是我之前的回复:
{
"state":
{
"errorDetails":
[
]
},
"results":
[
{
"state":
{
"errorDetails":
[
]
},
"id":"someNumber1",
"version":"2017-11-23T15:25:20.154+00:00",
"referenceId":"1234"
}
]
}
更新后的回复:
{
"state":
{
"errorDetails":
[
]
},
"results":
[
{
"state":
{
"errorDetails":
[
]
},
"id":"someNumber1",
"version":"2017-11-23T15:25:22+00:00",
"referenceId":"1234"
}
]
}
我通过 JSON Extractor 提取版本并将其传递给下面的 BeanShell 断言:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
try{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
long created = sdf.parse(vars.get("noteVersion")).getTime();
long updated = sdf.parse(vars.get("updatedNoteVersion")).getTime();
if ( updated > created){
SampleResult.setResponseMessage("PASSED");
}else{
SampleResult.setResponseMessage("FAIL");
}
}
catch (Exception ex){
log.warn("Error in my script", ex);
throw ex; // elsewise JMeter will "swallow" the above exception
}
但是我无法解析日期时间并遇到以下错误:
java.text.ParseException: Unparseable date: "2017-11-23T15:25:20.154+00:00"
at java.text.DateFormat.parse(Unknown Source) ~[?:1.8.0_31]
at sun.reflect.GeneratedMethodAccessor77.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_31]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_31]
at bsh.Reflect.invokeMethod(Reflect.java:134) [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.Reflect.invokeObjectMethod(Reflect.java:80) [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.Name.invokeMethod(Name.java:858) [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75) [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.BSHPrimarySuffix.doSuffix(BSHPrimarySuffix.java:103) ~[bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:80) [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.BSHVariableDeclarator.eval(BSHVariableDeclarator.java:86) ~[bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.BSHTypedVariableDeclaration.eval(BSHTypedVariableDeclaration.java:84) ~[bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.BSHBlock.evalBlock(BSHBlock.java:130) [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.BSHBlock.eval(BSHBlock.java:80) [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.BSHBlock.eval(BSHBlock.java:46) [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.BSHTryStatement.eval(BSHTryStatement.java:86) [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.Interpreter.eval(Interpreter.java:645) [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.Interpreter.eval(Interpreter.java:739) [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at bsh.Interpreter.eval(Interpreter.java:728) [bsh-2.0b5.jar:2.0b5 2005-06-12 04:50:41]
at sun.reflect.GeneratedMethodAccessor34.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_31]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_31]
at org.apache.jmeter.util.BeanShellInterpreter.bshInvoke(BeanShellInterpreter.java:166) [ApacheJMeter_core.jar:3.3 r1808647]
at org.apache.jmeter.util.BeanShellInterpreter.eval(BeanShellInterpreter.java:189) [ApacheJMeter_core.jar:3.3 r1808647]
at org.apache.jmeter.util.BeanShellTestElement.processFileOrScript(BeanShellTestElement.java:151) [ApacheJMeter_core.jar:3.3 r1808647]
at org.apache.jmeter.assertions.BeanShellAssertion.getResult(BeanShellAssertion.java:105) [ApacheJMeter_components.jar:3.3 r1808647]
at org.apache.jmeter.threads.JMeterThread.processAssertion(JMeterThread.java:812) [ApacheJMeter_core.jar:3.3 r1808647]
at org.apache.jmeter.threads.JMeterThread.checkAssertions(JMeterThread.java:803) [ApacheJMeter_core.jar:3.3 r1808647]
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:525) [ApacheJMeter_core.jar:3.3 r1808647]
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:424) [ApacheJMeter_core.jar:3.3 r1808647]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:255) [ApacheJMeter_core.jar:3.3 r1808647]
除此之外,我能够实现与 yyyy-MM-DD HH:mm:ss - (2017-11-23 15:25:20) 相同的正常日期时间要求
谁能帮我解决这个问题
最佳答案
我对您的建议是放弃早已过时的 SimpleDateFormat
及其 friend ,而使用 java.time
,现代 Java 日期和时间 API 也称为 JSR-310。一般来说,使用它会更好,并且在您的特定情况下,它有一些很好的优势,正如我们将看到的。
String noteVersion = "2017-11-23T15:25:20.154+00:00";
String updatedNoteVersion = "2017-11-23T15:25:22+00:00";
OffsetDateTime created = OffsetDateTime.parse(noteVersion);
OffsetDateTime updated = OffsetDateTime.parse(updatedNoteVersion);
if (updated.isAfter(created)) {
System.out.println("PASSED");
} else {
System.out.println("FAILED");
}
使用问题中的数据时间版本字符串,代码片段将打印
PASSED
第一个优点:JSON 中的日期时间格式是 ISO 8601,这是一种以文本形式交换日期和时间信息的标准格式,以及 JSON 中经常使用的其他地方。包括 OffsetDateTime 在内的 java.time 类将此格式解析为默认格式,即没有任何显式格式规范。无需担心偏移量是 Z
还是 XXX
还是其他。
第二个优点:ISO 8601 足够灵活,允许时间带有或不带有毫秒,因此解析适用于您之前的日期时间和更新的日期时间(使用 SimpleDateFormat
您将需要两个 SimpleDateFormat
实例)。
问题:我可以在我的 Java 版本中使用现代 API 吗?
如果至少使用 Java 6,则可以。
关于java - Jmeter BeanShell 断言解析并比较 json 中的 UTC 日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47466744/
我想运行从不同 beanshell 文件导入的类。但我不知道如何从主 beanshell 文件实例化类。这可能吗? 我导入的类: class HelloW { public void run(){
我的 Beanshell 后处理器中有这段代码 String line; String[] words; line = SampleResult.getResponseMessage(); log.i
我正在使用 beanshell bsh-2.0b4.jar 文件。我有构建路径并在 java 程序中使用它。我已经设法从控制台获取打印语句。但是如果是返回一个值,如何获取返回值。 import
我正在尝试弄清楚如何将参数传递给从初始脚本调用的第二个脚本。 Beanshell 文档对此只字不提。有谁知道如何做到这一点? // Start.bsh import bsh.Interpreter;
我需要读取一次文件并在采样器中进一步处理其结果。我的策略是ThreadGroup--> BeanShell Preprocessor + BeanShell Sampler 我的预处理器应该为整个线程
只是试图将整数转换为字符串。 vars.put("test", i); 我想将值放在变量“test”中,但它不起作用,我想我必须将 int 转换为字符串。 但我不知道该怎么做。 我刚刚发现了如何在 B
我正在 JMeter BeanShell 中尝试以下代码 我需要比较 OldT 的值与 ${so_tid_1}这是一个精确的字符串而不是一个变量 String OldT = vars.get("Old
我正在使用 beanshell 采样器打印 csv 文件中的响应,但完成后它并没有停止。 如何才能让它在打印后停止。下面是我使用的示例代码,acctId 用于其他线程组的预处理器中。 import j
我正在学习 Jmeter。 我有一个 BeanShell 断言,它应该会使测试失败(失败被硬编码到断言中)。但所有测试都通过了。我做错了什么? 我的理解是,如果 BSA 设置 Faliure = tr
这段代码: print(" - Start"); int[] num = new int[] {1,2,3,4,5,6,7,8,9,10}; for(int i : num) { print(
我有以下 JSON: [ { "": "", "substituted_restday": "2020-02-01", "original_re
什么是 beanshell 中的 if not equal 语句?如果这相等: if ("myVarValue".equals(vars.get("MY_VARIABLE"))) 最佳答案 使用 !
我想使用我的java代码作为beanshell脚本,但是beanshell抛出异常,说在命名空间中找不到类。 beanshell中没有内部类还是有其他用途? 我的脚本如下所示: ....... ...
我正在尝试测试 BeanShell 的命令行解释器如何在我的机器上处理基本的 Java 命令和语法,并查看是否可以以任何方式自定义其行为。我已在运行 OS X 10.10.1 的计算机上安装了版本 2
如何将 iterate the directory contents and put each file 放入 List 或其他集合中? thufir@dur:~/beanshell$ thufir@
我有一个 Bean shell 预处理器,它最终根据用户传递的值设置一些全局变量,例如主机名和路径。 bean shell 设置的变量将被所有线程组使用。 目前,我已将 BS 预处理器放置在线程之外,
是否可以停止线程,或者在 BeanShell 预处理器中强制失败?我尝试从 ThreadGroup 类和其他一些类访问 "stop()" 函数/方法,但我不确定我做得是否正确,或者是否正确有可能。 如
我在调试 beanshell 脚本时遇到了麻烦,但我一直得到的是: 异常调用导入的对象方法。 :在第 194 行:在文件中:内联评估:``import java.lang.reflect.Invoca
我正在尝试为 beanshell 中编写的代码编写一个基本的静态代码分析工具,该工具将执行一些基本检查,例如未使用的变量、方法以及可能永远不会评估为 true 的条件。 我尝试使用 beanshell
我不太确定如何解释这一点,但这里是: 我希望能够将一些命令“插入”到将从外部文件加载的代码部分中。为了解析和执行这些命令,我可能必须使用一些脚本,例如 BeanShell 的 eval 方法。问题
我是一名优秀的程序员,十分优秀!