在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. 如何获取当前scalajs/uTest测试用例的名称
- 9. py.test:如何从setup方法获取当前测试的名称?
- 10. Robot Framework获取当前测试用例的名称
- 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