当前位置: 首页 > 面试题库 >

与Java的断言不同,Groovy的断言是生产代码的好主意吗?

段宏毅
2023-03-14
问题内容

在Java中,众所周知使用assert关键字通常是一个坏主意,因为它的行为取决于运行时环境(默认情况下,它不会执行任何操作,除非-
enableassertion传递给Java运行时)。

Groovy的断言是否有所不同?它是否总是在生产代码中执行,并且建议在生产代码中使用?(在Java中,您可以使用类似“
前提条件”之类的方法)

从我的健全性测试看来,默认情况下似乎assert没有任何标志就可以很好地工作,并且实际上它比Java关键字要强大得多(请参阅Power
Assert)-我只是在寻找一个正式/完整的答案,而不是我的轶事。


问题答案:

Groovy assert始终在生产代码中执行,我建议在生产中使用。我认为以下内容大致相同,但Groovy版本更紧凑

Groovy

assert file.exists(), "$file does not exist"

爪哇

if (!file.exists()) {
    throw new SomeRuntimeException(file + " does not exist");
}


 类似资料:
  • 问题内容: 今天,我看到了一个带有Java断言而不是JUnit断言的JUnit测试用例-相对于另一个而言,优先选择一个优点还是缺点? 问题答案: 在JUnit4中,JUnit断言引发的异常(实际上是Error)与java 关键字(AssertionError)引发的错误相同,因此它与堆栈跟踪完全相同,除了您无法分辨出其区别。 话虽这么说,断言必须在JVM中使用特殊标志运行,导致许多测试似乎通过了,

  • 有时候我们需要匹配后面跟着特定模式的一段模式。比如,我们要从 1 turkey costs 30€ 这段字符中匹配价格数值。 我们需要获取 € 符号前面的数值(假设价格是整数)。 那就是前瞻断言要做的事情。 前瞻断言 语法为:x(?=y),它表示 “匹配 x, 仅在后面是 y 的情况"” 那么对于一个后面跟着 € 的整数金额,它的正则表达式应该为:\d+(?=€)。 let str = "1 tu

  • 问题内容: 我不明白如何编写Java代码来实现。我总是看到要实现的代码,但不是为。我知道,我们需要编写如下代码: 要么 但是呢?一旦用户使用登录到应用程序,我想验证应用程序的标题。我怎样才能做到这一点? 问题答案: 您必须使用仅支持Assert语句的TestNG框架。它不支持验证语句。您可以访问TestNG Javadoc的以下URL: http://testng.org/javadocs/ 来自

  • 本文向大家介绍Python断言assert的用法代码解析,包括了Python断言assert的用法代码解析的使用技巧和注意事项,需要的朋友参考一下 在开发一个程序时候,与其让它运行时崩溃,不如在它出现错误条件时就崩溃(返回错误)。这时候断言assert 就显得非常有用。 python assert断言是声明布尔值必须为真的判定,如果发生异常就说明表达式为假。 可以理解assert断言语句为rais

  • 有什么理由将多个断言分组:

  • 问题内容: Java异常处理和使用条件之间有什么区别? 众所周知,Assert有两种类型。但是什么时候应该使用关键字? 问题答案: 将断言用于代码中的内部逻辑检查,并使用常规异常来处理即时代码无法控制的错误情况。 不要忘记可以打开和关闭断言-如果您关心参数验证之类的事情,则应该使用异常来明确声明。(但是,您可以选择使用断言在 私有 方法上执行参数验证,原因是此时的违反是由于内部错误而不是外部错误引