Remplir l'idéal de Clear Architecture est un peu difficile avec Android, car Android est un framework complet qui a ses propres spécifications, même au niveau de base de la langue.
Je pense, comme l'idéal des outils spécifiques niveau libre est la plupart du temps à des fins de test, donc - cela devrait être le but principal à l'esprit lorsqu'il s'agit d'Android. Considérons le Parcelable lui-même, considérez que c'est simplement ajouter des méthodes supplémentaires pour l'objet modèle afin de rendre Android OS capable de sérialiser/désérialiser les données entre les différents composants du système. Comme vos tests au niveau du domaine ne sont pas exécutés par Android OS, ils ne devraient pas toucher à ces méthodes et cela n'affecterait pas vos tests.
Tenir compte, plusieurs autres API dans Android qui ne sont pas disponibles dans le test de l'unité, comme Uri, DateUtils, SparseArray et plus ...
C'est là que je pense que Roboelectric
peut venir à portée de main, avec moquant ces primitives Android.
Ceci étant dit ... avec l'architecture claire, votre niveau de domaine doit être séparé du niveau Présentation, donc en gros vous auriez des objets de modèle dans deux couches (qui peut partager l'interface) et les deux peuvent utiliser AutoValue
, mais uniquement au niveau Présentation, vous pouvez implémenter l'interface Parcelable
(qui en a besoin, car dans ce niveau, vous interagirez avec le système et utiliserez Parcel
). Aucune dépendance d'Android au niveau du domaine n'est la seule considération pour cette séparation, gardez à l'esprit que le niveau Présentation peut ajouter des informations non pertinentes au niveau Domaine.
J'ai la même question, peut-être devrions-nous utiliser 'java.io.Serializable', mais je préfère utiliser une bibliothèque similaire à https://github.com/rharter/auto-value-parcel. –
Oui mais je pense qu'à la fin il vaudra mieux faire du module de domaine une librairie android. – BauerMitFackel
AFAIK, Domain Layer ne devrait pas avoir de dépendance Android, sinon le test sera difficile. –