登录
首页 >  Golang >  Go问答

如何仅在测试时允许一个包访问另一个包的未导出数据?

来源:Golang技术栈

时间:2023-04-06 13:15:19 280浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《如何仅在测试时允许一个包访问另一个包的未导出数据?》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到golang等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

Go Programming Language 的第 11.2.4 节中,有一个通过in文件的fmt.isSpace()声明访问外部测试的示例。这似乎是一个完美的解决方案,所以这就是我所做的:IsSpace``fmt``export_test.go

a/a.go

package a

var x int

func Set(v int) {
    x = v
}

a/a_test.go

package a
import "testing"

func TestSet(t *testing.T) {
    Set(42)
    if x != 42 {
        t.Errorf("x == %d (expected 42)", x)
    }
}

func Get() int {
    return x
}

(运行正常go testa/

b/b.go

package b
import "path/to/a"

func CallSet() {
    a.Set(105)
}

b/b_test.go

package b
import (
    "testing"
    "path/to/a"
)

func TestCallSet(t *testing.T) {
    CallSet()
    if r := a.Get(); r != 105 {
        t.Errorf("Get() == %d (expected 105)", r)
    }
}

不幸的是,当我运行go testb/,我得到:

./b_test.go:11: undefined: a.Get

尝试同时运行两组测试go test ./...并没有帮助。

经过一番相当多的探索后,我发现“ *_test.go 文件仅在为该包 运行 go test 时才编译到包中 ”(强调我的)。(因此,换句话说,我可以a.Get从 中的a_test外部测试包访问a/,但不能从 之外的任何包访问a/。)

是否有其他方法可以允许一个包中的测试访问另一个包中的其他内部数据,以进行集成测试?

正确答案

是否有其他方法可以允许一个包中的测试访问另一个包中的其他内部数据,以进行集成测试?

不,没有。

以上就是《如何仅在测试时允许一个包访问另一个包的未导出数据?》的详细内容,更多关于golang的资料请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>