JUnit 4.4 結合 Hamcrest 提供了一個全新的斷言語法——assertThat。

Assert.assertThat


/** * JUnit 4.4 結合 Hamcrest 提供了一個全新的斷言語法——assertThat。() * 程序員能夠只使用 assertThat 一個斷言語句,結合 Hamcrest 提供的匹配符,就能夠表達所有的測試思想,咱們引入的版本是Junit4.12因此支持assertThat。 * assertThat 的優勢: * 優勢 1:之前 JUnit 提供了不少的 assertion 語句, * 如:assertEquals,assertNotSame,assertFalse,assertTrue,assertNotNull,assertNull 等,如今有了 JUnit 4.4,一條 assertThat 便可以替代全部的 assertion 語句, * 這樣能夠在全部的單元測試中只使用一個斷言方法,使得編寫測試用例變得簡單,代碼風格變得統一,測試代碼也更容易維護。 * 優勢 2:assertThat 使用了 Hamcrest 的 Matcher 匹配符,用戶可使用匹配符規定的匹配準則精確的指定一些想設定知足的條件,具備很強的易讀性,並且使用起來更加靈活。 * 如下方法均爲Assert.assertThat下面是簡寫 */ //字符相關匹配符 /**equalTo匹配符斷言被測的testedValue等於expectedValue, * equalTo能夠斷言數值之間,字符串之間和對象之間是否相等,至關於Object的equals方法 */ //assertThat(testedValue, equalTo(expectedValue)); /**equalToIgnoringCase匹配符斷言被測的字符串testedString *在忽略大小寫的狀況下等於expectedString */ //assertThat(testedString, equalToIgnoringCase(expectedString)); //assertThat(testedString, anyOf(containsString("developer"), containsString("Works"))); /**equalToIgnoringWhiteSpace匹配符斷言被測的字符串testedString *在忽略頭尾的任意個空格的狀況下等於expectedString, *注意:字符串中的空格不能被忽略 */ //assertThat(testedString, equalToIgnoringWhiteSpace(expectedString); /**containsString匹配符斷言被測的字符串testedString包含子字符串subString**/ //assertThat(testedString, containsString(subString) ); /**endsWith匹配符斷言被測的字符串testedString以子字符串suffix結尾*/ //assertThat(testedString, endsWith(suffix)); /**startsWith匹配符斷言被測的字符串testedString以子字符串prefix開始*/ //assertThat(testedString, startsWith(prefix)); //通常匹配符 /**nullValue()匹配符斷言被測object的值爲null*/ //assertThat(object,nullValue()); /**notNullValue()匹配符斷言被測object的值不爲null*/ //assertThat(object,notNullValue()); /**is匹配符斷言被測的object等於後面給出匹配表達式*/ //assertThat(testedString, is(equalTo(expectedValue))); /**is匹配符簡寫應用之一,is(equalTo(x))的簡寫,斷言testedValue等於expectedValue*/ //assertThat(testedValue, is(expectedValue)); /**is匹配符簡寫應用之二,is(instanceOf(SomeClass.class))的簡寫, *斷言testedObject爲Cheddar的實例 */ //assertThat(testedObject, is(Cheddar.class)); /**not匹配符和is匹配符正好相反,斷言被測的object不等於後面給出的object*/ //assertThat(testedString, not(expectedString)); /**allOf匹配符斷言符合全部條件,至關於「與」(&&)*/ //assertThat(testedNumber, allOf( greaterThan(8), lessThan(16) ) ); /**anyOf匹配符斷言符合條件之一,至關於「或」(||)*/ //assertThat(testedNumber, anyOf( greaterThan(16), lessThan(8) ) ); //數值相關匹配符 /**closeTo匹配符斷言被測的浮點型數testedDouble在20.0¡À0.5範圍以內*/ //assertThat(testedDouble, closeTo( 20.0, 0.5 )); /**greaterThan匹配符斷言被測的數值testedNumber大於16.0*/ //assertThat(testedNumber, greaterThan(16.0)); /** lessThan匹配符斷言被測的數值testedNumber小於16.0*/ //assertThat(testedNumber, lessThan (16.0)); /** greaterThanOrEqualTo匹配符斷言被測的數值testedNumber大於等於16.0*/ //assertThat(testedNumber, greaterThanOrEqualTo (16.0)); /** lessThanOrEqualTo匹配符斷言被測的testedNumber小於等於16.0*/ //assertThat(testedNumber, lessThanOrEqualTo (16.0)); //集合相關匹配符 /**hasEntry匹配符斷言被測的Map對象mapObject含有一個鍵值爲"key"對應元素值爲"value"的Entry項*/ //assertThat(mapObject, hasEntry("key", "value" ) ); /**hasItem匹配符代表被測的迭代對象iterableObject含有元素element項則測試經過*/ //assertThat(iterableObject, hasItem (element)); /** hasKey匹配符斷言被測的Map對象mapObject含有鍵值「key」*/ //assertThat(mapObject, hasKey ("key")); /** hasValue匹配符斷言被測的Map對象mapObject含有元素值value*/ //assertThat(mapObject, hasValue(value));
相關文章
相關標籤/搜索