TDD(Test Driver Develop)在業界推廣時,因難練易破,一直沒有被普及。
但沒有測試用例的用例,程式猿在釋出程式時,也是心裡沒有底。總之,測試要有的,但做到哪些需要做,做到哪種程度,是需要根據自身情況進行推敲了
本文分享一個入門篇,使用Junit4進行測試
工具/原料
junit4
IntelliJ IDEA
方法/步驟
需要的Jar:junit-4.11.jar
IntelliJ IDEA其它已經帶有,但版本可能與自己預期不符。建設放一個在classpath中。
需要測試的程式碼。
既然是入門,也不搞太簡單的demo程式,直接測一個有用的api吧。
org.apache.commons.lang.StringUtils.isBlank(String str);
Code:
public static boolean isBlank(String str) {
int strLen;
if(str != null && (strLen = str.length()) != 0) {
for(int i = 0; i < strLen; ++i) {
if(!Character.isWhitespace(str.charAt(i))) {
return false;
}
}
return true;
} else {
return true;
}
}
null的場景:
Code:
package tdd;
import org.apache.commons.lang.StringUtils;
import org.junit.Test;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
/**
* Created by MyWorld on 2016/3/18.
*/
public class StringUtilsTest {
@Test
public void testIsBlankWhen_null_is_given_then_return_true() {
boolean isTrue = StringUtils.isBlank(null);
assertThat(isTrue, is(true));
}
}
這是入門篇嘛。
簡單解釋下程式碼:
@Test//這是一個註解,用來標註,這個方法是個測試用例。
assertThat(isTrue, is(true));//使用的好處就是可以把進行比較的資訊都打印出來,過會可以示例一下
走一個。
在方法名上點選右鍵,在彈出的選單上選 Run 'testIsBlankWhen_nu..()'
看看執行結果。
過了。
看看到傳說的綠條了吧
TDD中是先紅後綠
再來一個失敗的場景。順便呈現下assertThat的優勢
Code:
@Test
public void testIsBlankWhen_demo_is_given_then_return_true() {
boolean isTrue = StringUtils.isBlank("demo");
assertThat(isTrue, is(true));
}
執行結果。當然是不過了
java.lang.AssertionError:
Expected: is
but: was
已經紅了。改下,讓測試用例跑過吧。
偷下懶。直接加個!吧
Code:
@Test
public void testIsBlankWhen_demo_is_given_then_return_false() {
boolean isTrue = !StringUtils.isBlank("demo");
assertThat(isTrue, is(true));
}