Lors de l'exécution d'un test JUnit, je ne peux pas obtenir le contexte de l'application pour charger les propriétés des fichiers de propriétés externes.
Compte tenu des éléments suivants: p>
testclass p> APP-CONFIG.XML P> <util:properties id="aProperties" location="classpath:spring/a.properties" />
<util:properties id="bProperties" location="classpath:spring/b.properties" />
<bean id="oracleDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="${oracle.url}"/>
<property name="username" value="${oracle.username}"/>
<property name="password" value="${oracle.password}"/>
</bean>
4 Réponses :
Il apparaît que vous utilisez Maven. Cela aiderait à savoir où vous mettez les fichiers. Par convention, la version de test des fichiers de propriétés devrait aller dans la version SRC / Test / Resources / et la version de production dans SRC / Main / Ressources. Ils devraient résoudre automatiquement. P>
SRC / Main / Ressources / Spring / App-Config.xml A.Properties B.properties Je ne les ai pas eues copiées à SRC / Test / Ressources. Je viens de les copier, nettoyé et re-ran le test et cela ne fonctionne toujours pas. L'exception réelle a été levée est la suivante: org.springframework.jdbc.CANNOTGETJDBCConnectionException: Impossible d'obtenir une connexion JDBC; exception imbriquée est org.apache.commons.dbcp.sqlnestetion exception: impossible de créer PoolaBacConnectionfactory (ORA-01017: nom d'utilisateur / mot de passe non valide; connecté refusé si j'endique du disque dur des valeurs dans le fichier XML, cela fonctionne, mais ne lira toujours pas le des dossiers.
Selon votre exception:
org.springframework.jdbc.cannotgetjdbcconnectionException: Impossible d'obtenir une connexion JDBC; imbriqué Exception est org.apache.commons.dbcp.sqlnesteceptionException: Ne peut pas créer PoolaBlaConnectionFactory (ORA-01017: nom d'utilisateur / mot de passe invalide; se connecter refusé p> blockQuote>
Votre probelm n'est pas que les propriétés ne sont pas trouvées, si les propriétés ne sont pas trouvées, si les propriétés ne sont pas trouvées, l'exception serait quelque chose comme
org.springframework.beans.Factory.beandefinitionSoreException: ... impossible de résoudre le lieu d'accueil 'oracle.username' code> p>
Et ceci est parce que Vous devez configurer un caractère de propriétéLetholderConfigureur au lieu d'un PropriétésFactoryBean strong> (c'est ce que UTIL: les propriétés sont http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/htmlsingle/spring-framework- référence.html # xsd-config-body-schemas-util-propriétés ) p>
xxx pré> p>
Mais lorsque je remplace le texte de l'espace réservé dans le contexte de l'application avec les valeurs d'URL / nom d'utilisateur / mot de passe réelles, le test fonctionne. La seule chose à laquelle je puisse penser, c'est que les propriétés ne sont pas correctement lues ni trouvées. Les journaux [Info] indiquent même que les propriétés sont chargées. Lorsque cela est publié dans un conteneur Web, tout fonctionne bien. I.E. Les propriétés sont trouvées, lues et insérées correctement. :(
Les tests fonctionnent avec des valeurs réelles car ils sont lus et attribués sous forme de chaîne. Les propriétés sont trouvées mais elles ne sont pas traduites, c'est-à-dire "" $ {foo.bar} "sera considéré comme une chaîne non comme une clé pour une certaine valeur. Peut-être que le déploiement du conteneur Web implique un espace de placement dans le contexte complet. Dans votre test, vous n'avez qu'un contexte minimal.
@ Aralph J'essayais de répondre à la question de Camada (au moins me semble une question) du premier commentaire. Mais j'ai oublié de le taguer
J'ai abandonné. J'ai téléchargé une nouvelle copie d'Eclipse 3.6 pour Java EE et j'ai suivi les instructions d'installation SpringSource Tool Suite via la méthode Site de mise à jour. p>
J'ai importé mon projet dans le nouvel environnement avec un nouvel espace de travail et tout ce qui fonctionne parfaitement. P>
Je vais le craquer aux gnomes Eclipse. P>
abandonner et refaire la chose est la dernière chose à faire. Ce n'est pas une solution à une question.
Vous pouvez séparer vos fichiers de configuration de test, contexte de ressort, jbdc.properties, dans src / test / ressources em> dirvoir pour respecter les fichiers de structure maven.
Pour configurer des fichiers spéciaux forts> forts> pour le test, vous devez les définir dans le contexte de l'application Spring Test à l'aide de PropertyProitPlaceLerfigurier Strong> comme Ralph Strong> Dites. Les fichiers de propriété doivent Soyez dans src / tests / ressources em> et chargez-les avec le nom de la barre oblique et du fichier
Exécutez-vous les tests via une construction Maven ou via Eclipse> Exécuter comme> Junit Test?
Eclipse> Exécuter comme> Junit Test Maven à ce stade ne gère que des dépendances. Je l'ai seulement amené parce que j'ai rencontré un autre insecte avec celui-ci qui a dû faire avec l'ordre du chemin de construction.