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会报编译错误。但