如何管理測試依賴項的初始化程式碼
php小編新一將為您介紹如何管理測試依賴項的初始化程式碼。在進行軟體開發時,往往需要使用各種測試工具和框架,而這些工具和框架可能需要一些初始化程式碼來進行設定和準備工作。管理這些初始化程式碼的方式對於測試的可維護性和可擴充性非常重要。以下將為您詳細介紹如何管理測試依賴項的初始化程式碼,以幫助您更好地進行軟體測試工作。
問題內容
我有一個日誌包裝器(在下面使用 logrus 實作),並且我正在使用這個套件來記錄我的應用程式。我執行此操作的方法是透過依賴項注入將記錄器變數傳遞給每個所需的套件。
在這裡,當為每個套件編寫測試案例時,我必須編寫一些程式碼來初始化記錄器套件。我們如何避免為每個使用記錄器的套件的測試案例編寫初始化程式碼?
記錄器/log.go
type logger interface { info(args ...interface{}) infof(format string, keyvals ...any) infowithfields(fields map[string]interface{}, msg ...interface{}) debug(args ...interface{}) debugf(format string, keyvals ...any) debugwithfields(fields map[string]interface{}, msg ...interface{}) }
app_test.go
func setupLogrusLogger() (*bytes.Buffer, Logger) { buf := &bytes.Buffer{} logrusLogger := log.New() logrusLogger.Out = buf logrusLogger.Formatter = &log.JSONFormatter{} return buf, NewLogrusLogger(logrusLogger) } func TestSomething(t *testing.T) { // buf can be used to inspect what gets logged if required buf, logger := setupLogrusLogger() Something(logger) }
在這裡,對於每個使用記錄器的包,我必須透過定義類似於 setuplogruslogger
的內容來初始化記錄器。有什麼方法可以避免為我正在為其編寫測試的每個包單獨編寫此內容?
解決方法
匯出依賴初始化函數並在非 _test.go
檔案中聲明,以便其他套件可以導入並重複使用它。如果您想將測試邏輯與套件的正常程式碼分開,您可以將初始化函數移至提供測試實用程式的套件中。
並且,只要您僅從_test.go
檔案(而不是普通檔案)匯入此類測試實用程式包,測試實用程式程式碼就不會使其進入實際程式的編譯二進位檔案中。
此類測試實用程式套件的範例可以在標準庫中找到:
#套件 httptest 提供了用於 HTTP 測試的實用程式。
#socktest 套件提供了用於套接字測試的實用程式。
套件 fdtest 提供測試助手,用於跨 exec 使用檔案描述子。
#Package Quick 實作了實用函數來幫助進行黑盒測試。
#軟體包 fstest 實現了對檔案系統測試實作和使用者的支援。
#iotest 套件實作了主要用於測試的讀取器和寫入器。
以上是如何管理測試依賴項的初始化程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

complex 類型用於表示 C 語言中的複數,包含實部和虛部。其初始化形式為 complex_number = 3.14 + 2.71i,實部可透過 creal(complex_number) 訪問,虛部可透過 cimag(complex_number) 存取。此類型支援常用的數學運算,如加、減、乘、除和取模。此外,還提供了一組用於處理複數的函數,如 cpow、csqrt、cexp 和 csin。

fabs() 函數是 C++ 中的一個數學函數,用於計算浮點數的絕對值,去除負號並傳回正值。它接受一個浮點參數,並傳回一個 double 類型的絕對值。例如,fabs(-5.5) 將傳回 5.5。此函數適用於浮點數,其精確度受底層硬體影響。

prime 是 C++ 中的關鍵字,表示質數類型,只能被 1 和本身整除,用作布林類型指示給定值是否為質數,為質數則為 true,否則為 false。

std 是 C++ 中包含標準函式庫元件的命名空間。為了使用 std,需要使用 "using namespace std;" 語句。直接使用 std 命名空間中的符號可以簡化程式碼,但建議僅在需要時使用,以避免命名空間污染。

在 C++ 中,prime 指質數,即大於 1 且只能被 1 和它本身整除的自然數。質數在密碼學、數學問題和演算法中應用廣泛。產生質數的方法包括厄拉多塞篩法、費馬小定理和米勒-拉賓檢定。 C++ 標準函式庫中提供 isPrime 函數判斷是否為質數,nextPrime 函數傳回大於給定值的最小質數,prevPrime 函數傳回小於給定值的最小質數。

C++智慧指標的生命週期:建立:分配記憶體時建立智慧指標。所有權轉移:透過移動操作轉移所有權。釋放:智慧指標離開作用域或被明確釋放時釋放記憶體。物件銷毀:所指向物件被銷毀時,智慧型指標成為無效指標。

C++ 中的 min 函數可傳回多個值中的最小值。其語法為:min(a, b),其中 a 和 b 為要比較的值。也可以指定一個比較函數,以支援不支援 < 運算子的類型。 C++20 引入了 std::clamp 函數,可處理三個或更多值的最小值。

C++並發程式框架具有以下選項:輕量級執行緒(std::thread);執行緒安全的Boost並發容器和演算法;用於共享記憶體多處理器的OpenMP;高效能ThreadBuildingBlocks(TBB);跨平台C++並發互操作庫(cpp-Concur)。
