2013-03-12 39 views
1

我創建了一個基於Spring的Web應用程序,我使用Spring將服務的實現添加到定義的接口。到目前爲止,如此標準。工作正常。Spring中用戶相關的bean定義

我想允許用戶在運行時爲他的會話覆蓋應用程序行爲。爲此,我希望spring根據用戶會話改變接口背後的實現。

一個用例是在INT上運行的自動測試用例,它應該測試系統創建的電子郵件的輸出。在INT上,配置了一封電子郵件服務,將電子郵件發送到我們的郵件服務器。我不希望測試用例必須使用郵件協議檢查郵件。我希望以防萬一自動測試用例運行以修改電子郵件實現以將電子郵件作爲註釋寫入HTML,因此我的測試可以輕鬆檢查結果。所以還有更多這樣的情況,在特殊情況下更改實現bean會很好。

在春天有沒有一個概念可以幫助我實現這樣的功能,還是我必須自己創建這個功能?

附加信息:全部是關於自動驗收測試。該測試運行在我們與maunual測試人員共享的系統上。 =>手動測試人員想要爲他們的測試獲得一封真實的電子郵件 =>自動測試通過不接收電子郵件來降低複雜性,只需用較少的依賴性檢查電子郵件內容。 如果我們有兩個系統,一個配置滿足人類需求,另一個配置滿足自動化測試需求,則沒有問題。但事實並非如此,所以我需要一種方法來改變運行時的系統行爲。

+1

聽起來像[春季檔案](http://blog.springsource.org/2011/02/14/spring-3-1-m1-introducing-profile/)將是一個不錯的選擇 - 一個用於生產和一個供測試用。 – 2013-03-12 13:50:37

+0

聽起來有點奇怪。如果您創建自動測試,則通常需要測試模塊,一起測試某些模塊或測試應用程序。如果用另一個模塊更換一個模塊,則將使用該測試模塊測試應用程序,但不測試其在現實生活中的表現 - 您可能需要創建一些集成或單元測試來驗證其他模塊的行爲。 – chiccodoro 2013-03-12 13:52:42

+0

我想測試應用程序,因爲我需要測試發送的電子郵件的內容。但我不想測試郵件庫的實現,我們的郵件服務器和某種郵件客戶端的實現。因爲它會更真實,但它使事情變得更加複雜,我認爲它會帶來更多的問題而不是好的。 – mibutec 2013-03-12 14:00:46

回答

0

它通常以下列方式進行:

  1. 使用彈簧測試模塊,它可以讓你的測試創建Spring上下文並注入豆成你的測試類設置的測試,
  2. 使用相同用於測試的上下文文件,除了創建一個單獨的彈簧配置文件,其中默認的郵件服務實現被替換爲模擬,編寫一個測試用例,在其中模擬用戶以編程方式完成的步驟,最後聲明類似assertEquals("<expected_email_text>", mailServiceMock.getLastEmail())的內容。

從你的問題,目前還不清楚你爲什麼會偏離上述標準方法。如果你解釋了你的理由,可能會更容易提出一個合適的答案。

相關問題