2017-05-20 24 views
7

断言,一个string不是在JUnit可以通过以下方式进行空:如何assertThat字符串不是空

assertTrue(!string.isEmpty()); 
assertFalse(string.isEmpty()); 
assertThat(string.toCharArray(), is(not(emptyArray())); // (although this didn't compiled) 

我的问题是:有没有检查这一个更好的方式 - 这是如:

assertThat(string, is(not(empty()))

+3

这些字符串操作有一个匹配器:['IsEmptyString'](http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/text/IsEmptyString.html) – Seelenvirtuose

+0

另一种选择:'assertThat(string .isEmpty(),is(false))' – Seelenvirtuose

回答

20

在hamcrest 1.3,你可以使用Matchers#isEmptyString

assertThat(string, not(isEmptyString())); 

在hamcrest 2.0,你可以使用Matchers#emptyString

assertThat(string, is(not(emptyString()))); 
+0

我想到*应该是这样的,但我认为不应该有或OP不会问。感谢您的实际检查。 :-) – Wyzard

+1

@Wyzard嗨,先生。感谢您的反馈意见。其实这是你的短路。^_^ –

+1

是的,但你的更好(或者至少,这是我实际使用的,现在我知道它存在)。 – Wyzard

1

编写您自己的TestHelper类,您可以在其中收集声明的自定义方法,例如,

public static void assertEmpty(String input) {...} 
+0

这是类似的东西,可以由我来实现。这是不是意味着,没有其他方式使用** Mathcers **? – Armine

+0

这只是一个提示。您的应用程序越大,有自定义断言和帮助程序方法支持测试自己的业务逻辑是有帮助的。例如,不是测试''assertTrue(password.length> 6)'',你可以有一个''assertPasswordOk(password)''方法来检查所有标准的有效密码。 – Matt

0

你想要声明的是你的字符串的大小。

assertThat("String is empty", 
     string.length(), 
     greaterThan(0)); 
1

什么,你也可以做的是叫AssertJ它提供了极大的流畅断言到你的代码使用库。检查可以用优雅来完成:

assertThat(myString).isNotEmpty();

3

我会用assertThat(string, is(not(equalTo(""))))。与其他涉及检查字符串.length().isEmpty()方法结果的方法不同,这将在测试失败时向您显示错误消息中的字符串内容。

编辑:。其实,不,我不会我会用emptyString()isEmptyString()匹配在holi-java's answer解释给予好评的那一个,不是这一个。)

1

您可以使用JUnit自己assertNotEquals断言:

Assert.assertNotEquals("", string); 
0

如果使用的是弹簧,你可以使用StringUtils.hasLength(String str)功能 - 从org.springframework.util套餐的,这使得定字符串的空检查,并检查长度。

相关问题