代码之家  ›  专栏  ›  技术社区  ›  ryvantage

将SoapUI属性值设置为“今天+1年”

  •  1
  • ryvantage  · 技术社区  · 6 年前

    目标 :以以下格式指定值为“今天+1年”的SoapUI属性 yyyy-MM-dd (例如,今天是2018年10月10日,因此我希望该物业拥有2019年10月10日)。


    尝试#1(内联属性):

    不起作用,因为JDK 8似乎不是默认Soap UI包的一部分:

    ${=LocalDate.now().plusYears(1).format(DateTimeFormatter.ISO_DATE)}
    

    返回错误,因为 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,Thu-Oct 10 00:00:00 EDT 2019]可能的解决方案:format(java.lang.String,java.util.TimeZone),format(java.lang.String),from(java.time.Instant)第8行错误


    尝试#3(groovy脚本):

    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 )
    

    (为简洁起见,省略了堆栈跟踪的其余部分)


    如何在SoapUI中添加一个值为today+1年的属性?

    附加问题:如何添加jdk8以便在groovy脚本中使用它?

    2 回复  |  直到 4 年前
        1
  •  2
  •   Mike W    6 年前

    有groovy吗?

    def nextYear = use( groovy.time.TimeCategory ) { new Date() + 1.year }.format( 'yyyy-MM-dd' )
    
        2
  •  1
  •   ryvantage    6 年前

    进一步的研究得出了答案: 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 )
    

    作品。