2010-03-17 65 views
0

我有一組類,即數據傳輸對象,服務實現對象和數據訪問對象。我目前在服務實現對象中有業務邏輯;它使用dao獲取數據來填充發送回客戶端/ gui代碼的dto。業務邏輯是否屬於服務層?

問題是我無法創建服務實現對象(它是一個servlet)的輕量級junit測試;我認爲業務邏輯應該在其他地方,但我能想到的唯一事情就是將業務邏輯放在dao中,或者放在dao和服務實現之間的另一層中。

還有其他的選擇,還是我在想這個錯誤的方式?

這是一個GWT/App Engine項目。

回答

1

我不明白你爲什麼不能單元測試servlet,例如根據this SO question(還有其他類似的主題) - 你能解釋一下嗎?

編輯:如果沒有特殊原因,我建議你應該在服務層中的業務邏輯(它似乎屬於)和單元測試的地方 - 在SO問題建議的方法我剛引述,例如,似乎相當輕量級(雖然我沒有具體測試)。

+0

其他則無知,無理由。謝謝。 – 2010-03-17 03:06:25

+0

好吧,那麼我認爲你應該保持服務層的業務邏輯並對其進行單元測試 - 在我引用的SO問題中提出的方法似乎足夠輕量級(儘管我沒有專門測試它們)。 – 2010-03-17 03:39:07

0

你可以把你的業務邏輯在它自己的jar文件,並從與網絡(servlet的)整合

該servlet只是一個協議,這是不是你的業務邏輯,更集成獨立測試這個組件點。

通過胖客戶端可以很容易地想象到公開相同的業務邏輯。 同樣在這種情況下,您不應該隱藏按鈕或鏈接下的業務邏輯。

還有一點需要注意:你可能想看看MVC框架;支柱。您的模型將保持業務邏輯。

希望這會有所幫助。

0

該servlet是控制器,這是一個非常大的錯誤,把業務邏輯放在那裏。

+0

因爲它是一個控制器! – 2012-12-19 16:37:15