Comment fait-on créer par programmation un Printemps contexte?
Personne ne sait si il existe un moyen de créer par programmation un haricot contexte?
Je veux être en mesure de faire quelque chose comme:
ConfigurableApplicationContext c = new ConfigurableApplicationContext();
BeanDefinition bd = new BeanDefinition();
bd.setId("id");
bd.setClassName("classname");
bd.setProperty("propertyName", propertyValue");
...etc...
ou, mieux encore, être capable d'injecter un haricot dans le contexte de l'application:
c.addBean("beanId", beanObject);
Ou si je suis en utilisant des annotations:
c.setAnnotationAware(true);
c.setAnnotationScanBasePackage("packagename");
ou
c.addAnnotatedSpringClass("classnamethatisannotated");
La raison pour cela est que je veux être en mesure de remplacer bean définitions aux fins de tests - Dans mon test j'ai créer ce nouveau contexte d'application, configuré avec le code dans le test (pas en xml), et puis faire ce test de contexte de l'application en tant que parent le SUT contexte de l'application.
Je n'ai pas trouvé de code dans le printemps des bibliothèques qui peuvent le faire. Quelqu'un a construit quelque chose comme cela? Serait-il possible de construire quelque chose comme ça? Je sais que la première approche est faisable, je ne suis pas sûr à 100% la dernière approches seront sans conditions.
- Est-il une raison de ne pas l'utiliser XML pour le test de haricots définitions? Spring fournit de l'unité de soutien d'essai exactement pour ce genre de chose.
- Problème avec le xml, c'est que c'est un peu lourd. Prend trop de temps pour créer le xml et il semble un peu trop pour ce que vous essayez d'atteindre.
- Bienvenue dans le monde de Java, mec.
- Je pense que nous parlons des Tests d'Intégration, tests unitaires sont beaucoup plus simple 🙂
Vous devez vous connecter pour publier un commentaire.
Essayer:
JavaConfig exemple de code
BeanBuilder exemple de code
AtUnit exemple de code
De test de l'unité
Fichier de contexte ( privé pour le test )
Pourquoi ne pas simplement utiliser deux contextes différents? l'un pour la production, l'un pour les tests... vous allez sur ce dur chemin.
Au Printemps, vous pouvez remplacer les haricots définition aussi facilement que pour les faire paraître encore plus bas dans le fichier. Nous utilisons beaucoup de très pour le but décrit; un autre bean définition pour les tests unitaires que pour la production.
C'est le modèle que nous utilisons pour nos test-context.xml
Cela signifie que le bean id = overriddenBean sera câblé dans les classes de votre production contewxts ont été référencé. Vous permettant de permuter les haricots vous avez besoin pour tester à la place de ceux que vous avez besoin pour la production de code.
Espère que cette aide
Il suffit d'ajouter une fève usine post-processeur qui permet de manipuler/ajouter les bean définition
Il est de la marque nouvelle façon de ce faire - Printemps De Démarrage