2011-02-08 57 views
2

我們將使用BDD實現一個小型Java應用程序,該應用程序使用apache.org的POI讀取MS excel表單,並將基於該excel的一些文本打印到STDOUT。我們同意最簡單的解決方案是爲每個BDD測試用例創建一個test.xls。在BDD測試用例中使用嘲諷是否明智?

還有另外一個想法,那就是我們應該嘲笑POI庫的調用和對測試的期望。這個想法背後的原因是我們不想測試POI,並且浪費測試時間在每個測試用例中使用它。另外文件訪問在不同的操作系統上可能會很棘手。

在這種情況下使用模擬是明智的嗎?

感謝, 索爾特

回答

2

我從來沒有嘲諷的大風扇,但它有一定道理在某些情況下。

我認爲Apache POI足夠穩定,您可以將其正確地存​​根。要問的重要一點是如果你正在測試與POI的交互?如果你是,那麼你不能嘲笑它。

既然你說你不測試與POI的交互,那就繼續吧。

+0

我做了一些[spikes](http://www.extremeprogramming.org/rules/spike.html),看起來我必須寫很多期望,所以我將POI的真正實現現在 – Zsolt 2011-02-08 22:36:32

4

定義你嘲笑地方的限制,在那裏你不肯定是灰色的,但是我覺得大概有嘲笑那盤指導兩個通用聲明:

  1. Mock only interfaces that you own
  2. Mocks are not stubs

因此,儘管有一定的時間,當你想嘲笑一個子系統,因爲它是緩慢的,適當的嘲諷正在確定慢行系統的東西,需要建築分離,所以你會開發出正確與慢代表的交互界面系統,並嘲笑那裏的行爲。然後,您將有另一類測試來測試那些實際與緩慢資源交互的接口的實現,以確保該代碼正常工作。

就POI如何應用而言,可能會或可能不會有很好的理由來模擬POI的抽象。這取決於項目的範圍。對我而言,如果我覺得該項目可能需要長期不同的電子表格解決方案,我會這樣做。

我肯定不會嘲笑實際的POI類,因爲上面的第一個鏈接非常清楚地說明了這種方法會涉及多少痛苦。

+0

謝謝@易海,這非常有幫助 – Zsolt 2011-02-08 22:34:42