加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

单元测试 – 如何在Groovy脚本中设置退出状态

发布时间:2020-12-14 16:35:32 所属栏目:大数据 来源:网络整理
导读:我们有一个Groovy脚本,当一切正常工作时退出状态为0,对于不同类型的故障条件,我们有一个非0状态.例如,如果脚本将用户和电子邮件地址作为参数,则对于无效用户将退出状态为1,对于无效的电子邮件地址格式为2.我们使用System.exit(statusCode).这工作正常,但使脚
我们有一个Groovy脚本,当一切正常工作时退出状态为0,对于不同类型的故障条件,我们有一个非0状态.例如,如果脚本将用户和电子邮件地址作为参数,则对于无效用户将退出状态为1,对于无效的电子邮件地址格式为2.我们使用System.exit(statusCode).这工作正常,但使脚本难以编写测试用例.

在测试中,我们创建了GroovyShell,创建了Binding并调用了shell.run(script,args).对于断言失败的测试,System.exit()导致JVM(和测试)退出.

有没有办法使用System.exit()退出Groovy脚本?我尝试抛出未捕获的异常,但是这个异常会混淆输出,并且始终使状态代码为1.

在我们的测试用例中,我也尝试使用System.metaClass.static.invokeMethod来更改System.exit()的行为,不退出JVM,但这似乎是一个丑陋的黑客.

解决方法

imho System.metaClass.static.invokeMethod看起来不错.这是测试,黑客在这里很好.

此外,您可以在其周围创建自己的包装,如:

class ExitUtils {

    static boolean enabled = true

    static exit(int code) {
        if (!ExitUtils.enabled) {
            return  //TODO set some flag?
        }
        System.exit(code)
    }

}

并禁用它进行测试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读