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中文網其他相關文章!

在当今科技快速发展的时代,编程语言也如雨后春笋般涌现出来。其中一门备受瞩目的语言就是Go语言,它以其简洁、高效、并发安全等特性受到了许多开发者的喜爱。Go语言以其强大的生态系统而著称,其中有许多优秀的开源项目。本文将介绍五个精选的Go语言开源项目,带领读者一起探索Go语言开源项目的世界。KubernetesKubernetes是一个开源的容器编排引擎,用于自

Go开发环境选择指南:寻找最稳定版本的关键在Go开发中,选择一个稳定的开发环境对于提高开发效率和代码质量至关重要。本文将为您提供选择最稳定版本Go开发环境的关键,并通过具体代码示例进行说明。一、选择稳定的Go版本Go语言版本更新频繁,但并不是每个版本都适合开发。为了确保开发环境的稳定性,建议选择最新的稳定版本。您可以通过以下命令查看最新的稳定版本:gove

随着互联网的发展,Web开发变得越来越重要。而在Web开发中,选择合适的开发语言和工具是至关重要的。近年来,Go语言因其并发性能和简洁性而备受关注,逐渐成为Web开发领域的热门选择。本文将介绍Go语言开发网站所必备的工具,帮助读者深入了解和使用Go语言进行Web开发。一、Go语言简介Go语言是由Google开发的一种编译型、静态类型的开源编程语言。它继承了C

Go语言作为一种新兴的编程语言,近年来在软件开发领域迅猛发展。它以其简洁、高效和并发特性而备受开发者的青睐。但是,要想充分利用Go语言的优势,我们需要对它的应用范围有一个全面的了解。首先,Go语言在系统编程方面表现出色。系统编程是指为操作系统或底层硬件编写软件,主要负责处理系统资源的分配和管理。Go语言提供了丰富的标准库和强大的编译器,使开发者可以方便地进行

探索Go语言标准库:常用函数和数据结构详解引言:Go语言自诞生以来就以其简洁、高效、并发的特点吸引了许多开发者的关注。作为一门现代化的编程语言,Go语言在其标准库中提供了丰富的函数和数据结构,帮助开发者快速构建高性能、可靠的应用程序。本文将详细探索Go语言标准库中一些常用的函数和数据结构,并通过具体的代码示例来加深理解。一、strings包:字符串处理函数G

一、学习路线图1.基础知识语法:变量、类型、运算符、控制流、函数、数组、切片、映射、结构体、接口、并发、错误处理等。工具:GoLand、VSCode、终端命令等。2.标准库文件系统:文件读写、目录操作等。网络:HTTP、TCP、UDP等。并发:goroutine、channel、sync包等。加密:密码学、哈希函数等。其他:JSON、XML、正则表达式

在当今科技进步迅猛的时代,编程语言的选择变得非常关键。随着软件开发领域的不断发展,Go语言和Python成为了两个备受关注的编程语言。本文将对Go语言和Python进行对比分析,以帮助读者根据项目需求选择合适的编程语言。首先,让我们来了解一下Go语言。Go语言是由Google公司开发的一种静态编译型编程语言。它具有强大的并发处理能力和高效的垃圾回收机制,非常


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

Dreamweaver Mac版
視覺化網頁開發工具

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

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