将 SoapUI 属性 值设置为今天 + 1 年
Set SoapUI property value to today + 1 year
目标:分配一个 SoapUI 属性,其值为今天 + 1 年,格式为 yyyy-MM-dd
(例如,今天是 2018-10-10,所以我希望 属性 有 2019-10-10).
我尝试过的:
尝试 #1(内联 属性):
不起作用,因为 JDK 8 似乎不是默认 Soap UI 包的一部分:
${=LocalDate.now().plusYears(1).format(DateTimeFormatter.ISO_DATE)}
尝试 #2(groovy 脚本):
Returns 一个错误,因为 Date.format
不接受 String
和 java.util.Date
:
def today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
today.add(Calendar.YEAR, 1);
def nextYear = today.getTime();
def nextYear_formatted = Date.format("yyyy-MM-dd", nextYear);
testRunner.testCase.setPropertyValue( "nextYear", nextYear_formatted )
错误:
groovy.lang.MissingMethodException: No signature of method: static java.util.Date.format() is applicable for argument types: (java.lang.String, java.util.Date) values: [yyyy-MM-dd, Thu Oct 10 00:00:00 EDT 2019] Possible solutions: format(java.lang.String, java.util.TimeZone), format(java.lang.String), from(java.time.Instant) error at line: 8
尝试 #3(groovy 脚本):
Returns 一个错误,因为 SimpleDateFormat
似乎无法编译:
def today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
today.add(Calendar.YEAR, 1);
def nextYear = today.getTime();
def nextYear_formatted = new SimpleDateFormat("yyyy-MM-dd").format(nextYear);
testRunner.testCase.setPropertyValue( "nextYear", nextYear_formatted )
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script20.groovy: 8: unable to resolve class SimpleDateFormat @ line 8, column 27. def nextYear_formatted = new SimpleDateFormat("yyyy-MM-dd").format(nextYear); ^ org.codehaus.groovy.syntax.SyntaxException: unable to resolve class SimpleDateFormat @ line 8, column 27. at org.codehaus.groovy.ast.ClassCodeVisitorSupport.addError(ClassCodeVisitorSupport.java:149) at ...
(为简洁起见省略了剩余的堆栈跟踪)
如何在 SoapUI 中添加值为今天 + 1 年的 属性?
额外问题:如何添加 JDK 8 以便在 groovy 脚本中使用它?
进一步研究得出答案:SimpleDateFormat
前面需要java.text.
。所以
def today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
today.add(Calendar.YEAR, 1);
def nextYear = today.getTime();
def nextYear_formatted = new java.text.SimpleDateFormat("yyyy-MM-dd").format(nextYear);
testRunner.testCase.setPropertyValue( "nextYear", nextYear_formatted )
有效。
你有 groovy 空位吗?
def nextYear = use( groovy.time.TimeCategory ) { new Date() + 1.year }.format( 'yyyy-MM-dd' )
目标:分配一个 SoapUI 属性,其值为今天 + 1 年,格式为 yyyy-MM-dd
(例如,今天是 2018-10-10,所以我希望 属性 有 2019-10-10).
我尝试过的:
尝试 #1(内联 属性):
不起作用,因为 JDK 8 似乎不是默认 Soap UI 包的一部分:
${=LocalDate.now().plusYears(1).format(DateTimeFormatter.ISO_DATE)}
尝试 #2(groovy 脚本):
Returns 一个错误,因为 Date.format
不接受 String
和 java.util.Date
:
def today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
today.add(Calendar.YEAR, 1);
def nextYear = today.getTime();
def nextYear_formatted = Date.format("yyyy-MM-dd", nextYear);
testRunner.testCase.setPropertyValue( "nextYear", nextYear_formatted )
错误:
groovy.lang.MissingMethodException: No signature of method: static java.util.Date.format() is applicable for argument types: (java.lang.String, java.util.Date) values: [yyyy-MM-dd, Thu Oct 10 00:00:00 EDT 2019] Possible solutions: format(java.lang.String, java.util.TimeZone), format(java.lang.String), from(java.time.Instant) error at line: 8
尝试 #3(groovy 脚本):
Returns 一个错误,因为 SimpleDateFormat
似乎无法编译:
def today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
today.add(Calendar.YEAR, 1);
def nextYear = today.getTime();
def nextYear_formatted = new SimpleDateFormat("yyyy-MM-dd").format(nextYear);
testRunner.testCase.setPropertyValue( "nextYear", nextYear_formatted )
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script20.groovy: 8: unable to resolve class SimpleDateFormat @ line 8, column 27. def nextYear_formatted = new SimpleDateFormat("yyyy-MM-dd").format(nextYear); ^ org.codehaus.groovy.syntax.SyntaxException: unable to resolve class SimpleDateFormat @ line 8, column 27. at org.codehaus.groovy.ast.ClassCodeVisitorSupport.addError(ClassCodeVisitorSupport.java:149) at ...
(为简洁起见省略了剩余的堆栈跟踪)
如何在 SoapUI 中添加值为今天 + 1 年的 属性?
额外问题:如何添加 JDK 8 以便在 groovy 脚本中使用它?
进一步研究得出答案:SimpleDateFormat
前面需要java.text.
。所以
def today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);
today.add(Calendar.YEAR, 1);
def nextYear = today.getTime();
def nextYear_formatted = new java.text.SimpleDateFormat("yyyy-MM-dd").format(nextYear);
testRunner.testCase.setPropertyValue( "nextYear", nextYear_formatted )
有效。
你有 groovy 空位吗?
def nextYear = use( groovy.time.TimeCategory ) { new Date() + 1.year }.format( 'yyyy-MM-dd' )