首页 > 解决方案 > 有没有更简单的方法可以从空手道测试中调用 Java 断言并为断言提供失败消息?

问题描述

有没有更简单的方法可以从空手道测试中调用 Java 断言并为断言提供失败消息?我有一种感觉一定有更优雅的方式?

这是我现在不正确的做法:

* def assertNotBlank =
    """
    function(val, msg) {
      var Assertions = Java.type('org.junit.jupiter.api.Assertions');
      var StringUtils = Java.type('org.apache.commons.lang3.StringUtils');
      var JSONObject = Java.type('org.json.JSONObject');
      return Assertions.assertFalse(StringUtils.isBlank(
        new org.json.JSONObject(val).toString()), msg);
    }
    """

然后在您的功能文件中调用它,如下所示:

And eval assertNotBlank {val: '#(response)', msg: 'The reason here.'}

标签: karate

解决方案


看到这段代码让我觉得你最好不要使用空手道而只使用 Java,尤其是当我看到类似new org.json.JSONObject. 空手道非常擅长处理 JSON,你到底为什么要这么做?

另外,您可能的意思是call而不是eval.

也就是说,也许这个答案会给你一些提示,也请阅读评论:https ://stackoverflow.com/a/60693949/143475


推荐阅读