目标:以yyyy-MM-dd
格式(例如,今天是2018年10月10日)分配一个值为今天+ 1年的SoapUI属性(例如,今天是2018年10月10日,物业有2019-10-10)。
尝试#1(在线属性):
不起作用,因为JDK 8似乎不是默认的Soap UI软件包的一部分:
${=LocalDate.now().plusYears(1).format(DateTimeFormatter.ISO_DATE)}
尝试#2(常规脚本):
返回错误,因为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:方法的无签名:static java.util.Date.format()适用于参数类型:(java.lang.String,java.util.Date)值:[yyyy-MM- dd,星期四10月10日00:00:00 EDT 2019]可能的解决方案:format(java.lang.String,java.util.TimeZone),format(java.lang.String),from(java.time.Instant)错误行:8
尝试#3(常规脚本):
返回错误,因为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:启动失败:Script20.groovy:8:无法解析类SimpleDateFormat @第8行,第27列。def nextYear_formatted = new SimpleDateFormat(“ yyyy-MM-dd”)。format (明年); ^ org.codehaus.groovy.syntax.SyntaxException:无法解析类SimpleDateFormat @第8行,第27列。位于org.codehaus.groovy.ast.ClassCodeVisitorSupport.addError(ClassCodeVisitorSupport.java:149)在...
(为简便起见,省略了堆栈跟踪的其余部分)
如何在SoapUI中添加具有今天+ 1年价值的属性?
奖金问题:如何添加JDK 8,以便可以在groovy脚本中使用它?
答案 0 :(得分:2)
您有可用的常规功能吗?
def nextYear = use( groovy.time.TimeCategory ) { new Date() + 1.year }.format( 'yyyy-MM-dd' )
答案 1 :(得分:1)
进一步的研究得出了答案:-
之前需要SimpleDateFormat
。所以
java.text.
有效。