整合測試 固定裝置多於自動裝置

2021-10-06 21:58:17 字數 3419 閱讀 8776

目錄介紹

背景使用**

興趣點

已顯示在

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 ...