繁体   English   中英

如何断言字符串不为空

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM