目錄介紹
背景使用**
興趣點
已顯示在
autofixture
中使用的固定裝置
(fixture
)對於測試自動化是乙個非常有用的概念。固定裝置
(fixture
)不僅對單元測試有用,而且該概念也可以在整合測試中重用。在本文中,將解釋什麼是固定裝置
(fixture
),以及該概念如何用於單元測試和整合測試。固定裝置
(fixture
)總是有乙個共同點:它們為您管理測試的「安排
」部分,這不僅對單元測試,而且對所有型別的測試都是有用的。
您對.net core
應用程式的
tdd有一定的經驗,這將非常有幫助,其中包括模擬,最好是此處使用的
.net core 3.1
。擁有固定裝置
(fixture)
的經驗也很有用,但不是必需的。本文中顯示的示例基於
xunit
,但是概念和技術也可以應用於其他單元測試框架。
首先,我們看一下要測試的**。這裡是:
}從上面的**中可以清楚地看出,它只是乙個控制器方法,它呼叫某些介面方法並返回帶有
ok狀態碼(
200)的結果。
這是該介面的實現。
public class searchengineservice : isearchengineservice
public async taskgetnumberofcharactersfromsearchquery(string tosearchfor)
");var content = await result.content.readasstringasync();
return content.length;
}}
此**也非常簡單。
web請求完成,並返回結果的長度。
這是在startup
類中新增依賴項的方式:
public void configureservices(iservicecollection services)
現在清楚的是,我們需要能夠模擬兩個依賴關係:
內部依賴項的模擬通常是出於單元測試的目的,使用
moq可以如
本文所述
。外部依賴項的模擬通常是出於整合測試目的而進行的,如
本文所述
,使用wiremock
,此處提供的一些**來自此。此處顯示的所有**在
上也可用。
這是使用固定裝置
(fixture)
進行單元測試的樣子:
[fact]
public async task gettest()
我們在這裡看到的是以下內容:
第一步是建立固定裝置。
之後,呼叫
freeze
方法(在
create
方法之前)以指定內部依賴性,我們希望在測試結束時進行一些驗證。
內部依賴關係需要與
setup
方法一起設定。
在測試方法的
assert
部分中,我們驗證對內部依賴項(
service
例項)的呼叫。
如測試的實現,需要乙個
nuget
包:autofixture.automoq。
從.net core
的最新版本開始,整合測試變得更加容易。與單元測試的主要區別在於整合更加真實(因此配置性更差)。在
startup
類和program
類都包括在內。使用實際的內部依賴關係來代替模擬/存根
(stubs)
。只有外部依賴項需要模擬,因為它們可以離線,具有變化的行為或不穩定,所有這些都不應破壞測試。這是使用固定裝置
(fixture)
進行整合測試的方法:
[fact]
public async task gettest()
}}private void setupstableserver(fluentmockserver fluentmockserver, string response)
我們在這裡看到的是類似的:
第一步是使用
startup
類建立固定裝置
(fixture)
,一旦create
方法被呼叫,它就初始化所有依賴項。
之後,呼叫
freezeserver
方法(在該
create
方法之前)以設定外部依賴關係,我們希望在測試結束時進行一些驗證。
內部依賴性需要使用一種自寫
setupstableserver
方法來設定,該方法描述某個請求需要某個響應。這將在
此處更詳細地說明。
在測試方法的
assert
部分中,我們驗證傳送到外部依賴項(模擬服務)的web請求。
實現諸如測試,需要另乙個
nuget包:。
從上面的**可以清楚地看到,使用固定裝置
(fixture)
進行整合測試的方式與使用固定裝置
(fixture)
進行單元測試的方式基本相同。但是,除了安排和驗證內部依賴項外,還需要使用外部依賴項來完成。他的建議聽起來很明顯,但是在不使用夾具的情況下進行整合測試時,需要大量的樣板以作解釋。
在研究固定裝置
(fixture)
,使用固定裝置
(fixture)
並撰寫本文時,對我來說清楚的是,固定裝置
(fixture)
的概念可以以多種方式使用。
autofixture
在編寫單元測試的安排部分時很有用,但其固定裝置
(fixture)
也可用於其他型別測試的(安排部分)。它使我們作為開發人員不必編寫大量樣板**。
Apache mina 與Spring整合設計
其實很簡單,看了網上很多例子,但是發現還是apache自己寫的比較好,於是就抄下來了。先說配置檔案,color red 注意這裡不能使用延遲載入和 byname 的方式找bean color 再然後我們只需要實現myprotocolhandler就可以了,只在接收資料加了處理,資料傳輸用的是byte...
Session會話固定測試
session會話固定測試 session 是應用系統對瀏覽器客戶端身份認證的屬性標識,在使用者退出應用系統時,應將客戶端session認證屬性標識清空。如果未能清空客戶端session標識,在下次登入系 統時,系統會重複利用該session標識進行認證會話。攻擊者可利用該漏洞生成固定 sessio...
struts spring整合測試
struts spring整合有3種方式,通過查閱資料得知,將servlet action 委託給spring來管理的這種方式優勢最為顯著.本次struts spring整合測試就是採用委託的方法。實施步聚 首先在struts config.xml檔案中註冊spring外掛程式,如下所示。plug ...