在Go中,我將如何獲得當前正在執行的測試的名稱,當前測試的函數名稱以Test
開頭,而不手動傳遞?獲取當前正在執行的測試測試的名稱?
2
A
回答
2
這是一個有趣的問題。當你定義一個測試,你繞過表示測試本身的結構:
func TestSomething(t *testing.T) {
testing.T
定義如下:
type T struct {
common
name string // Name of test.
startParallel chan bool // Parallel tests will wait on this.
}
所以結構t
在一個領域有測試的名稱稱爲name
。但是,出於某種原因,名稱不會被導出,並且沒有公共訪問者將返回它。因此,您無法直接訪問它。
有一種解決方法。您可以使用reflect
包訪問未導出name
,並從t
測試名稱:
v := reflect.ValueOf(*t)
name := v.FieldByName("name")
// name == "TestSomething"
我不知道這是否是最好的方法,但我沒能找到另一種合理的解決方案訪問來自測試包的name
。
+0
不錯的一個。我的方法是檢查調用樹,但是你不太容易出錯,並且可以在不根植於Test callstack的例程中工作。 https://github.com/anacrolix/missinggo/blob/master/testing.go#L12 –
0
上述答案很好。但是,它確實需要你的一個實現。如果你只需要方法的名稱請執行以下操作:
讓我們說t
被定義爲:t *testing.T
,你是從一個叫功能運行:TestNetworkProbe
然後美其名曰:
t.Log("Pass",t)
會產生(向右滾動一下,你的外殼找到...)
Pass &{{{{0 0} 0 0 0 0} [] false false false {63642628359 332863663 0x9bdec0} 0 0xc82008e090 0xc82006a300} TestNetworkProbe false 0xc82006a240}
相關問題
- 1. Mbunit - Gallio。獲取當前正在執行的測試的名稱
- 2. 如何獲取spock當前正在運行的測試的名稱?
- 3. 檢索當前正在運行的測試用例的名稱
- 4. 如何從單元測試中的測試套件獲取當前運行的測試用例名稱
- 5. 如何在Mocha測試中檢索當前測試的名稱?
- 6. 如何顯示當前執行的測試方法的名稱
- 7. 在Boost.Test中,如何獲取當前測試的名稱?
- 8. Robot Framework獲取當前測試用例的名稱
- 9. py.test:如何從setup方法獲取當前測試的名稱?
- 10. 如何獲取當前scalajs/uTest測試用例的名稱
- 11. 在BanditCPP中獲取當前測試名稱
- 12. Rails測試懸掛 - 如何在執行前打印測試名稱?
- 13. 如何在執行之前確定單元測試的名稱?
- 14. 正在執行的tcltest測試的名稱
- 15. 在測試用例中獲取BOOST TEST測試套件名稱
- 16. 由Nunit確定當前正在執行的測試用例
- 17. 如何查看當前正在執行的Protractor測試?
- 18. 獲取當前正在執行的方法的名稱
- 19. 如何在pytest運行時獲取測試名稱和測試結果
- 20. QTest獲得測試名稱
- 21. 獲得當前正在運行的QUnit測試
- 22. 使用NUnit - 我如何獲得當前正在執行的測試夾具和名稱?
- 23. 獲取在Xunit中運行測試的名稱
- 24. 獲取當前正在執行的當前線程的方法名稱
- 25. 獲取當前測試用例在Junit中運行的類
- 26. MS測試:獲取執行測試位置?
- 27. Selenium IDE:在測試中執行測試
- 28. junit 4.10:如何在運行測試時獲得測試類的名稱
- 29. 測試名稱與測試AssemblyCleanup
- 30. 從當前正在運行的單元測試中獲取信息
你可以在下面的鏈接中找到一些獲取函數名的方法:http://stackoverflow.com/questions/10742749/get-名稱的功能-U sing-google-gos-reflection – JesusTinoco