2017-05-20 29 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套餐的,這使得定字符串的空檢查,並檢查長度。

相關問題