Dans le cas où les tests sont dans un module différent du code de production (ce qui est courant), quelle est la meilleure façon de rendre les fonctions internes visibles pour les tests?
En Java, j'aurais le code de production et le test dans le même package et je ferais en sorte que le package des méthodes à tester soit privé (en plus, ajoutez un @VisibleForTest
annotation si la seule raison de l'avoir package-privé plutôt que privé est le test). Malheureusement, Kotlin n'a pas le concept de package-private.
Les classes et méthodes marquées d'un modificateur d'accès internal
fonctionneront à partir des versions actuelles de Kotlin, Gradle et Intellij pour accéder à ces méthodes à partir des classes de test. Les outils considèrent les chemins source principaux et de test comme faisant partie du même module.
Avez-vous déjà essayé cela? Et s'il échoue, vous devez signaler un bogue car il a déjà été signalé, corrigé et devrait être correct dans n'importe quelle version actuelle.
La solution la plus simple est probablement de placer vos tests unitaires en fonction du code interne dans le même module avec le code de production et de ne laisser que les tests d'intégration, qui utilisent l'API publique, dans le module séparé.
Cela semble raisonnable car le internal
modificateur signifie exactement la visibilité à l'intérieur du même module.