[英]How to assertThat String is not empty
可以通过以下方式断言 junit 中的string
不为空:
assertTrue(!string.isEmpty());
assertFalse(string.isEmpty());
assertThat(string.toCharArray(), is(not(emptyArray())); // (although this didn't compile)
我的问题是:有没有更好的方法来检查这个——比如:
assertThat(string, is(not(empty()))
?
在 hamcrest 1.3 中,您可以使用Matchers#isEmptyString :
assertThat(string, not(isEmptyString()));
在 hamcrest 2.0 中,您可以使用Matchers#emptyString :
assertThat(string, is(not(emptyString())));
更新- 请注意:“Maven 中心有一些额外的工件,称为 java-hamcrest 和 hamcrest-java,版本为 2.0.0.0。请不要使用这些,因为它们是重新打包不同 jar 的失败努力。” 来源:hamcrest.org/JavaHamcrest/distributables
您可以使用 JUnit 自己的assertNotEquals
断言:
Assert.assertNotEquals( "", string );
您还可以使用名为AssertJ 的库,它为您的代码提供流畅的断言。 检查可以用优雅的方式完成:
assertThat(myString).isNotEmpty();
我会使用assertThat(string, is(not(equalTo(""))))
。 与涉及检查字符串的.length()
或.isEmpty()
方法结果的其他方法不同,这将在测试失败时在错误消息中显示字符串的内容。
(编辑:实际上,不,我不会。我会使用如emptyString()
-java 的回答中所述的emptyString()
或isEmptyString()
匹配器。赞成那个,而不是这个。)
考虑使用 Apache 的StringUtils.isNotEmpty()方法,这是对空字符串的空安全检查。
assertTrue(StringUtils.isNotEmpty(str));
如果您已经在使用commons-lang3,您可以这样做,它还会检查空值和空格:
assertTrue(StringUtils.isNotBlank(string));
如他们的 javadoc 中所述:
isNotBlank :检查 CharSequence 是否不为空(“”)、不为空且不为空白。
编写您自己的 TestHelper 类,您可以在其中收集断言的自定义方法,例如
public static void assertEmpty(String input) {...}
您可以使用谷歌番石榴库方法Strings.isNullOrEmpty
来自 JavaDoc
public static boolean isNullOrEmpty(@Nullable String string)
如果给定的字符串为 null 或为空字符串,则返回 true。
考虑使用 nullToEmpty(java.lang.String) 规范化您的字符串引用。 如果这样做,您可以使用 String.isEmpty() 代替此方法,并且您也不需要像 String.toUpperCase(java.util.Locale) 这样的特殊空安全形式的方法。 或者,如果您想“在另一个方向”规范化,将空字符串转换为 null,您可以使用 emptyToNull(java.lang.String)。
参数:
string - 要检查的字符串引用
回报:
如果字符串为 null 或为空字符串,则为 true
您要断言的是字符串的大小。
assertThat("String is empty",
string.length(),
greaterThan(0));
无腿甲:
assertFalse(StringUtils.isEmpty(string));
如果您使用的是 JUnit5,那么您可以使用assertNotNull("yourString");
断言您的 String 是否不为空或 null 。
或者,如果您需要一条消息,那么您可以使用
assertNotNull("your String", "String is empty");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.