2011-10-10 92 views
4

爲了測試目的,我需要模擬XMPP服務器。我目前的意圖是運行本地XMPP服務器並綁定我的測試代碼,但是我想知道是否有人知道XMPP模擬庫已經存在?嘲笑XMPP服務器的建議

+1

我不知道這是否有用,但在書[面向生長對象的軟件,由測試引導](http://www.growing-object-oriented-software.com/)上,作者舉了一個例子測試使用XMPP的應用程序,他們選擇啓動OpenFire服務器,而不是模擬它。如果可以的話,可以獲得一份副本,因爲他們也談論了很多關於如何測試異步應用程序......而且它非常**,**非常好。 – Augusto

回答

3

這可能在某種程度上取決於您使用的工具,但在Smack中,例如,您可以創建自己的Connection類作爲模擬服務器。這是在Smack的測試案例中完成的。

基本上,您將回復IQ或消息數據包提供給連接,然後通過API撥打電話。然後將預設數據包作爲結果返回。你必須考慮的一件事是XMPP的異步特性,並確保你的測試服務器將以同樣的方式工作。

其他XMPP庫可能提供了一些類似的方法來啓用單元測試。

另一方面,如果您正在嘗試運行全面的集成測試場景,那麼我認爲本地服務器是正確的選擇。

3

要成功地模擬整個XMPP服務器,你基本上最終會得到一個XMPP服務器。我個人認爲這是測試整體的最可靠的方法,但我使用更小的更具體的測試來測試自包含的代碼段。

你會發現這本書的章節有趣的Remko可能是最考驗癡迷的人,我知道,這是寫出了自己最近的經驗開發客戶端:你自己http://el-tramo.be/blog/beautiful-xmpp-testing

+0

有一個讀了這個。 http://martinfowler.com/articles/mocksArentStubs.html特別是「嘲笑和存根之間的區別」這部分將會幫助你確定。我在腦海裏明確地澄清了一些事情 –

1

只有模擬類型 - 搜索這篇文章由Freeman n co ..

這個想法是,你應該只嘲笑你控制的角色。在這種情況下,XMPP服務器的接口不是您控制的接口。因此,定義您的應用需要的角色(接口)&,這是由XMPP服務器滿足的。

您可能會得到一個更簡單的界面 - 例如, SendTo(用戶,消息)。然後您需要編寫適合XMPP服務器角色的適配器。這件事將處理與您選擇的XMPPServer相關的所有怪癖。

這個更簡單的界面更容易模擬和彈性改變。 HTH