Avatar ·

Go中测试包的正确命名(unit-testing)

大家好!我是Go新手,正在尝试弄清楚如何正确命名测试包。我有一个如下结构的项目: ``` myapp/ ├── internal/ │ ├── calculator/ │ │ ├── calc.go │ │ └── calc_test.go │ └── validator/ │ ├── valid.go │ └── valid_test.go ├── cmd/ │ └── main.go └── go.mod ``` 在`calc.go`中,我声明了包`package calculator`。在`calc_test.go`中,我也写了`package calculator`,测试可以正常工作。但我看到有些开发者在测试文件中使用`package calculator_test`。有什么区别?什么时候应该在包名中使用`_test`,什么时候不用? 让我困惑的是,当使用`package calculator_test`时,我无法访问被测试包中未导出的函数和变量。例如,我在`calc.go`中有一个未导出的函数`addInternal()`,想测试它。如果我写成`package calculator_test`,Go会报编译错误。但