1. 我建議的新assertThat()樣式assertions,它可以很容易地描述各種否定,並自動產生你所expect的的描述,如果assertions失敗,你得到了什麼:assertThat(objectUnderTest,
is(not(someOtherObject))); assertThat(objectUnderTest, not(someOtherObject)); assertThat(objectUnderTest, not(equalTo(someOtherObject)));
所有這三個選項是等價的,選擇一個你認為最可讀。 assertNotEquals:
3. 我不知道assertions的API是不太適合做測試的對像是指它提供了和當然CodeGo.net,這是不是太長寫:mport static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.*;
隨著yield的這種說法部分是如此不幸應分別:
assertFalse(foo.equals(bar));
那是當然的,使其更好地推出自己assertNotEqual。確實是一個,使JUnit的少一點可以學習的。原因可能是因為有太multiplayer少,呼籲然而,我一個當即便assertFalse不存在,因此,我有可能最終被加了積極的expect,因為它不是一個困難的之一,儘管我承認,有解決方法,甚至是優雅的。 ,而不是assertFalse如在測試報告中會顯示一個diff的assertions失敗。指令,而無需先將它們轉換為完全成熟的物件:詳細的例子:
String msg = "Expected <" + foo + "> to be unequal to <" + bar +">"; assertFalse(msg, foo.equals(bar));
static void assertTrue(java.lang.String message, boolean condition)
8. 模API的一致性,為什麼是JUnit沒有提供assertNotEquals()就是為什麼JUnit的永遠喜歡它的原因assertStringMatchesTheRegex(regex, str)與assertStringDoesntMatchTheRegex(regex, str)assertStringBeginsWith(prefix, str)與assertStringDoesntBeginWith(prefix, str)即有沒有結束提供了一個具體的供種東西,你可能想在你的說法的邏輯! 更好的測試原語像equalTo(...),is(...),not(...),regex(...)並讓這些作品一起,而不是更多的可讀性和理智。