SOAPUI - groovy 脚本无法在其中一台机器上运行

SOAPUI - groovy script not working on ONE of machines

请参阅下面用于日期解析的简单 groovy 脚本:

def setProperty=testRunner.testCase.getTestStepByName("Properties");
Date currentDate = new Date();
String tmpDate = currentDate

//setting current DateTime to corresponding property
def DateTime = new Date().parse("E MMM dd H:m:s z yyyy", tmpDate).format("yyyy-MM-dd'T'hh:mm:ss")
setProperty.setPropertyValue('DateTime', DateTime);

此脚本可在某些安装了 Win 8.1、java 7 或 8 的计算机上正常运行。但是对于其中一台机器 (Win 8.1) 它 returns 一个错误

java.text.ParseException: Unparseable date: "Tue Jan 20 11:59:58 EET 2015"

有什么问题吗?脚本完全一样...

真诚的, 德米特里

你的做法太别扭了!您应该考虑使用 String.format() 直接格式化您的日期:

def propertiesStep = testRunner.testCase.getTestStepByName("Properties")
propertiesStep.setPropertyValue('DateTime',
    String.format("%tFT%tT", new Date(), new Date()))

您的代码似乎令人困惑...您正在使用 new Date() 生成 java.util.Date,然后在执行 String tmpDate=currentDate 时生成 String,然后您正在尝试获取 Date() 再次解析 tmpDate 字符串,最后您正在解析最后一个日期以获取具有特定格式的字符串日期...

我认为您必须稍微清理一下代码...我认为您正在寻找以下内容:

def setProperty=testRunner.testCase.getTestStepByName("Properties")
def currentDate = new Date()
def dateTime = currentDate.format("yyyy-MM-dd'T'hh:mm:ss")
log.info dateTime
setProperty.setPropertyValue('DateTime', dateTime)

希望这对您有所帮助,