如果你懶得去看那些很長很長的例子,不妨看看下面這個小例子,這個例子能讓你對測試驅動開發有一個直觀的了解。最起碼讓你知道測試驅動開發是一種開發技術而不是一項測試的技術。Fibonacci 數列,呵呵,可能有不少人都忘了怎么編的了吧,那正好帶你看看tdd的威力。
測試驅動開發,那么測試先行是必然的了。第一個測試來了:
{
AssertEquals(0,Fib(0));
}
Fibonacci 數列的第一個數是0,人人都知吧,好了現在測試代碼有了,那么我們先運行一下測試吧.
失敗,報錯,可惡的red進度條.
顯然,因為我們還甚至還沒有Fib()這個函數呢.
那么讓我們趕緊讓這個測試通過吧.
{
return 0;
}
ok!!! green 這將是你在tdd中最喜歡看到的顏色(多看綠色對我們的視力也是好事)
第二個測試
{
AssertEquals(0,Fib(0));
AssertEquals(1,Fib(1));
}
那我們趕緊讓它也通過吧
{
if(n==0) return 0;
return 1;
}
通過了!
從測試代碼中我們看到了
AssertEquals(0,Fib(0));
AssertEquals(1,Fib(1));
重復!不僅在源代碼,就是在測試代碼中,我們也要避免重復!!(測試代碼中也會出現模式哦~~)
這里,我們用一個最簡單的方法避免重復,用表驅動.
我們開始改寫測試代碼.
{
int cases[][]={{0,0},{1,1},{2,1}};
for(int i=0; i<case.Length;i++)
AssertEquals(case[i][1],fib[i][0]));
}
這樣添加測試代碼就容易多了.
測試代碼改過了!!!小心哦,讓我們再運行下,哦還能通過,那我們就可以放心繼續了.
{
int cases[][]={{0,0},{1,1},{2,1},{3,2}};
for(int i=0; i<case.Length;i++)
AssertEquals(case[i][1],fib[i][0]));
}
oh! 失敗了,趕快解決它
文章來源于領測軟件測試網 http://www.k11sc111.com/