Karate框架中调用自定义Datetime工具类报错求助
Karate调用Java日期工具类报错的解决方法
错误原因
你编写的getNowDate()是静态方法,但在Karate的feature文件中先实例化了Datetime对象,再尝试调用该方法。静态方法属于类本身而非实例对象,因此Karate提示找不到getNowDate标识符。
解决方法
方法一:直接调用类的静态方法(推荐)
无需实例化对象,直接通过类名调用静态方法,修改sdf.feature的Background部分:
Feature: Print current ISO datetime Background: * def Datetime = Java.type('com.org.unit.automation.utils.Datetime') * def effectiveDate = Datetime.getNowDate() * print effectiveDate
方法二:将静态方法改为实例方法(不推荐)
如果一定要通过实例对象调用,可去掉Java方法的static关键字,修改Datetime.java:
package com.org.unit.automation.utils; import java.text.SimpleDateFormat; import java.util.Date; public class Datetime { public String getNowDate() { // 移除static修饰符 Date nowDate = new Date(); SimpleDateFormat nowDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss'Z'"); return nowDateFormat.format(nowDate); } }
额外提示
日期格式中的hh代表12小时制,若需要24小时制显示时间,可将格式改为yyyy-MM-dd HH:mm:ss'Z'(大写HH)。
内容的提问来源于stack exchange,提问作者j8d
相关产品推荐
相关产品推荐

