我正在開展項目,我的任務是爲一個軟件包編寫一些測試。測試需要訪問不同包中的全局變量。這個全局變量可能是在不同軟件包的測試中設置/訪問的。因爲默認情況下,測試會針對不同的包並行運行。因此,設置/訪問此變量可能會創建競爭條件。什麼是最好的方式來同步不同包中涉及全局變量的測試?
最簡單的同步方法是創建一個跨越不同包的共享sync.Mutex。話雖如此,我試圖把這個sync.Mutex放在聲明全局變量的xxx.go的xxx_test.go中,不幸的是,由於範圍的限制,另一個軟件包無法訪問這個Mutex。最終,我發現我必須將這個sync.Mutex添加到專門用於測試的實用程序包中,然後不同的程序包可以訪問此Mutex以實現該全局變量的同步目的。
我是新郎朗。我只是覺得我需要創建一個實用程序包來實現測試中的同步目的很尷尬,另一方面,如果另一個開發人員在另一個包中做了一些測試,他/她可能不知道在哪裏可以找到這個sync.Mutex。有沒有更好的方法來實現這個同步的目的與一個優雅的解決方案。
非常感謝!
這是原因之一,爲什麼不推薦使用全局變量...: ) – cd1
確實,謝謝。 –