ファイルが本当に同じパッケージに含まれている場合、これは問題ではありません。私は問題なしで以下のテストを実行することができます。
ディレクトリ構造:
~/Source/src/scratch/JeffreyYong-Example$ tree .
.
├── example.go
└── example_test.go
example.go:
package example
import "fmt"
func unexportedFunc() {
fmt.Println("this totally is a real function")
}
example_test.go
package example
import "testing"
func TestUnimportedFunc(t *testing.T) {
//some test conditions
unexportedFunc()
}
テストコマンド:
〜/ソース/ src/scratch/JeffreyYong-Example $ go test -v。
出力:
=== RUN TestUnimportedFunc
this totally is a real function
--- PASS: TestUnimportedFunc (0.00s)
PASS
ok scratch/JeffreyYong-Example 0.001s
[MCVE]をご提示ください。テストファイルが同じパッケージ内にある場合は、すべてのパッケージレベル識別子にアクセスできます。 – JimB
同じパッケージ内にある場合、関数とグローバル変数はすべて互いにアクセス可能でなければなりません。どのようにあなたのテストを実行していますか? 'go test/...'? – reticentroot
未記入の識別子は同じパッケージからしかアクセスできないため、 'example_test.go'(ホワイトボックステスト)内で同じパッケージ宣言を使用してください。これは 'example.go'と同じフォルダになければなりません。詳細については、[テスト時にのみ、あるパッケージが別のパッケージの非エクスポートデータにアクセスする方法を教えてください](https://stackoverflow.com/questions/42930944/how-can-i-allow-one-package-access-to)を参照してください。 -nother-packages-unexported-data-only-whe/42931290#42931290) – icza