テストが本番コード(一般的)とは異なるモジュールにある場合、テストのために内部関数を可視化する最良の方法は何ですか?
Javaでは、同じパッケージに本番コードとテストを含め、テストするメソッドをパッケージプライベートにします(さらに、@VisibleForTest
アノテーション(プライベートではなくパッケージプライベートにする唯一の理由がテストの場合)。残念ながら、Kotlinにはpackage-privateの概念がありません。
internal
アクセス修飾子でマークされたクラスとメソッドは、Kotlin、Gradle、Intellijの現在のバージョン内からテストクラスからこれらのメソッドにアクセスするために機能します。ツールは、メインとテストのソースパスを同じモジュールの一部と見なします。
これはもう試しましたか?失敗した場合は、すでに報告されているのでバグを報告し、修正して、現在のバージョンでは問題ないはずです。
おそらく最も簡単な解決策は、内部コードに応じてユニットテストを本番環境と同じモジュールに配置し、パブリックAPIを使用する統合テストのみを別のモジュールに残すことです。
internal
修飾子 は、同じモジュール内の可視性を正確に意味するので、これは合理的であると思われます。