在方法中是否可以断言输入String具有一定长度?
我尝试断言stringName[4];
,但似乎不起作用
答案 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
对此的好处是,它将有一条正确的错误消息,其中包括字符串本身。