private functionのtest
このページでは基本的にprivate functionのtestをするときのことについて書く(書きたい)

前提
以下の2つを区別してtestを書く
tests/
のようなdirを作ってその中に書く
実装の詳細をtestしない
publicなもののみtestする
privateなものはtestしない
いくつかの方法
公開範囲をpackage内に制限すれば良い
(ここでいう「module」は、Goの用語では「pacakage」)
hoge.go
に対して、 hoge_test.go
にするなどの命名規則がある
参考
すごい

PHPなのにDXが良い
private methodのtestに関しては2022年になっても結論が出ていない
様々な論者の主張
そもそもprivate methodを一切使用しない
これは論外

全てのprivate methodをtestする
private methodはtestしない
ものによってtestしたりしなかったりする
private methodをまとめて別classに分ける
private methodをtestしたくなるということは、そのclassが大きすぎるということを疑う
使用している言語のmoduleのサポートがしょぼいせいで選択肢が失せるのは問題

TypeScriptとかだと、どうしてもpublicにしないとtestできない
だから泣く泣く、以下のいずれかの選択を迫られる
privateなものはtestしない
testのためだけにpublicにする
この辺の議論と、「private なものをtestするべきかどうか」はごっちゃにすべきでないと思う
いまいち読む気がしない