做事往往要帶很強的目的性去做才可以成功,單元測試也不例外
單元測試目的:
首先保證代碼質量。
其次保證代碼的可維護。
再此保證代碼的可擴展。
目的之一代碼的代碼質量。
我們編寫的代碼雖然可以通過編譯器檢測到語法的正確性質,但并不能保證代碼邏輯也是正確的。我們該怎么保證代碼執行是正確的呢。好下面我們來看下代碼。
java 代碼
int add(int x, int y){
return x+y;
}
上面的功能模塊。下面是段測試代碼
java 代碼
void testAdd(){
//我們要求程序邏輯是1+4=5;
assertEquals(5,add(1,4);
}
經過測試以后,如果你修改了int add(int x, int y);里面的邏輯,如果修改的正確,測試代碼始終都是見到綠色的。如果你邏輯錯了。那不好意思,你的測試將會讓你重新寫那段邏輯代碼。直到你正確為止。
有個比較特殊的情況,如果我測試代碼寫成這樣,那我保證邏輯代碼的正確性,但我卻看不到我期待的綠色,這有是什么原因呢?
java 代碼
1. void testAdd(){
2. //我們要求程序邏輯是1+4=5;
3. assertEquals(6,add(1,4);
4. }
我個人認為這個問題并是邏輯代碼的問題,而是你測試代碼中的邏輯問題,
噢,MyGot,作為程序員的我。已經為邏輯代碼傷腦筋了。還要為測試代碼煩惱,做人真命苦啊。 想來也確實是這樣。
這就引申了另外一個問題,怎么樣才可以保證我邏輯代碼的可測性?
目的之二代碼的可維護性。
就拿上面的例子來說吧。只要我們的單元測試是正確的,那我們就可以保證無論你怎么修改那段代碼,只要測試代碼可以產生綠色條,那OK,你修改的邏輯代碼是正確的。當然可維護并非只有這點,還有,比如保證修改了這段代碼不會影響到其他的模塊等。