1. ホーム
  2. unit-testing

go (golang) で unexported (private) な関数をテストする方法は?

2023-11-04 16:02:17

質問

私はgoの"unexported (private) functions"のユニットテストを作成することに興味がありました。しかし、私はそれらを "public"にしなければならないので、テストパッケージでそれらを形成するユニットテストを作成するのは基本的に本当に難しいです。なぜなら、私はそれらを "public"にしなければならないからです。これは結局、それらがプライベートであるという全体のポイントを打ち負かすことになります。ポイントは、これらのヘルパー関数がモジュール化を助け、モジュール化された今、テストパッケージ以外の誰もがそれらを利用できるようにすることなく、それらのためのユニットテストを作成できるようにすることは素晴らしいことでしょう。

何か提案はありますか?可能でしょうか? だけ は、独自のパッケージと1つの追加のパッケージまたはgoのその種の何かにエクスポートすることは可能ですか?

どのように解決するのですか?

パッケージ内にテストファイルを作成する

library_test.go

package mypkg

func TestPrivateStruct(t *testing.T){
  pf := private{ "Private Field" }
  ....
}

ライブラリ.go

package mypkg

type private struct {
  privateField string
}

go test mypkg -v は、あなたのプライベート構造体を用いてテストを実行します。