断言字符串具有一定长度(Java)

时间:2018-08-28 05:38:20

标签: java string assert

在方法中是否可以断言输入String具有一定长度?

我尝试断言stringName[4];,但似乎不起作用

3 个答案:

答案 0 :(得分:6)

如果您只想使用Java的assert关键字而不是JUnit之类的任何库,则可以使用:

String myStr = "hello";
assert myStr.length() == 5 : "String length is incorrect";

摘自官方文档:

  

断言语句有两种形式。第一种更简单的形式是:

     

assert Expression1;

     

其中Expression1是布尔表达式。什么时候   系统运行该断言,它评估Expression1,如果是   false会引发AssertionError,但没有详细消息。

     

断言语句的第二种形式是:

     

assert Expression1 : Expression2 ;

     

其中:   Expression1是布尔表达式。 Expression2是一个表示   有价值。 (它不能是已声明的方法的调用   无效。)

如果使用的是JUnit之类的测试库,则可以使用以下内容:

String myStr = "hello";
assertEquals(5, myStr.length());

更新: 正如AxelH的注释正确指出的那样,编译后,您将第一个解决方案作为java -ea AssertionTest运行。 -ea标志启用断言。

答案 1 :(得分:1)

建议不要使用assert,而应使用Exception作为一个简单的演示来检查变量的状态:

String[] arr = new String[3];
if (arr.length != 4) {
    throw new IllegalStateException("Array length is not expected");
}

这将直接给提示例外,并且您无需在jvm选项中使用assert

Exception in thread "main" java.lang.IllegalStateException: Array length is not expected
    at basic.AssertListLength.main(AssertListLength.java:7)

答案 2 :(得分:0)

如果您使用hamcrest,则可以执行以下操作:

 assertThat("text", hasLength(4))

请参见http://hamcrest.org/JavaHamcrest/javadoc/2.2/> CharSequenceLength

对此的好处是,它将有一条正确的错误消息,其中包括字符串本身。