2016-02-28 37 views
11

如果測試與生產代碼(這是常見的)不在同一個模塊中,測試內部函數的最佳方式是什麼?Kotlin:在單元測試中使內部函數可見

在Java中,我會將生產代碼和測試放在同一個包中,並使待測試的包是私有的(另外,如果要使包爲私有的唯一原因,請添加一個@VisibleForTest註釋而不是私人測試)。不幸的是,Kotlin沒有package-private的概念。

+1

也許「內部」修飾符可以幫助你:https://kotlinlang.org/docs/reference/visibility-modifiers.html – marcospereira

回答

8

標記爲internal訪問修飾符的類和方法將在Kotlin,Gradle和Intellij的當前版本中工作,以便從測試類訪問這些方法。這些工具將主要和測試源路徑視爲同一模塊的一部分。

你試過這個嗎?如果它失敗了,你應該報告一個錯誤,因爲這已經被報告,修復並且在任何當前版本中都應該沒問題。

+0

是的,這正是我用Intellij IDEA 15試過的。檢查我是IDE和Kotlin插件的最新版本,並且我的設置是正確的。 –

+0

最新的Intellij IDEA 15是15.0.4,Kotlin插件1.0.0 –

+0

它現在工作正常,我甚至沒有安裝任何更新。我以前可能做錯了事,並且感到困惑。很酷,它的工作!謝謝。 –

6

可能最簡單的解決方案是將您的單元測試依賴於內部代碼放在與生產環境相同的模塊中,並且在獨立模塊中只保留使用公共API的集成測試。

這似乎是合理的,因爲internal modifier意味着完全相同的模塊內的可見性。

相關問題