web-dev-qa-db-ja.com

Kotlin:単体テストで内部関数を可視化する

テストが本番コード(一般的)とは異なるモジュールにある場合、テストのために内部関数を可視化する最良の方法は何ですか?

Javaでは、同じパッケージに本番コードとテストを含め、テストするメソッドをパッケージプライベートにします(さらに、@VisibleForTestアノテーション(プライベートではなくパッケージプライベートにする唯一の理由がテストの場合)。残念ながら、Kotlinにはpackage-privateの概念がありません。

22
Jan Pomikálek

internalアクセス修飾子でマークされたクラスとメソッドは、Kotlin、Gradle、Intellijの現在のバージョン内からテストクラスからこれらのメソッドにアクセスするために機能します。ツールは、メインとテストのソースパスを同じモジュールの一部と見なします。

これはもう試しましたか?失敗した場合は、すでに報告されているのでバグを報告し、修正して、現在のバージョンでは問題ないはずです。

22
Jayson Minard

おそらく最も簡単な解決策は、内部コードに応じてユニットテストを本番環境と同じモジュールに配置し、パブリックAPIを使用する統合テストのみを別のモジュールに残すことです。

internal修飾子 は、同じモジュール内の可視性を正確に意味するので、これは合理的であると思われます。

7
hotkey