单元测试 – 在Golang中测试的正确包命名
我已经看到Go中的几个不同的测试包命名策略,想知道每个的利弊,我应该使用哪个。
策略1: 文件名:github.com/user/myfunc.go package myfunc 测试文件名:github.com/user/myfunc_test.go package myfunc 参见bzip2为例。 策略2: 文件名:github.com/user/myfunc.go package myfunc 测试文件名:github.com/user/myfunc_test.go package myfunc_test import ( "github.com/user/myfunc" ) 参见wire为例。 策略3: 文件名:github.com/user/myfunc.go package myfunc 测试文件名:github.com/user/myfunc_test.go package myfunc_test import ( . "myfunc" ) 参见strings为例。 Go标准库似乎使用策略1和2的混合。我应该使用哪三个?这是一个疼痛附加包* _test到我的测试包,因为它意味着我不能测试我的包私有方法,但也许有一个隐藏的优势,我不知道?
您列出的三种策略的根本区别是,测试代码是否与测试下的代码在同一个包中。决定在测试文件中使用软件包myfunc或软件包myfunc_test取决于您是要执行
white-box或
black-box测试。
在项目中使用这两种方法没有什么不妥。例如,你可以有myfunc_whitebox_test.go和myfunx_blackbox_test.go。 测试代码包比较 >黑盒测试:使用包myfunc_test,这将确保你只使用exported identifiers。 问题中列出的策略的比较 >策略1:文件myfunc_test.go使用package myfunc – 在这种情况下,myfunc_test.go中的测试代码将与myfunc.go中测试的代码在同一个包中,在本示例中为myfunc。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |