web-dev-qa-db-fra.com

Kotlin: rendre visible une fonction interne pour les tests unitaires

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.

22
Jan Pomikálek

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.

22
Jayson Minard

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.

7
hotkey