Printemps jUnit Test - soit ne peut pas autowire ou ne peut pas trouver appContext.xml

Je suis unittesting un ressort en fonction de l'application de l'atm.
D'abord le problème, c'est que si je n'ai pas commencé une fois que l'application sur un serveur de la unittests d'échec.
Si je fais démarrer l'application sur le serveur (et de l'arrêt), mes tests d'unité de travail.

Sans démarrer le serveur j'obtiens l'erreur suivante:

... java.io.FileNotFoundException: class path resource [META-INF/spring/applicationContext-test.xml] cannot be opened because it does not exist

Mon test Unitaire est défini comme suit:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/META-INF/spring/applicationContext-test.xml" })
@TransactionConfiguration
@Transactional
public class InventoryControllerTest extends AbstractTransactionalJUnit4SpringContextTests {

    private MockHttpServletRequest request;
    private MockHttpServletResponse response;

    private AnnotationMethodHandlerAdapter handlerAdapter;

    @Before
    public void setUp() throws Exception {
        request = new MockHttpServletRequest();
        response = new MockHttpServletResponse();
        handlerAdapter = applicationContext
            .getBean(AnnotationMethodHandlerAdapter.class);
}
    //... tests
}

Donc, comme je l'ai dit, si j'ai commencé l'application une fois avant, tout fonctionne bien.

J'ai donc modifié la configuration de l'emplacement de
emplacements = { "classpath/META-INF/spring/applicationContext-test.xml" })
Mais sans effort, même une exception, comme mentionné ci-dessus.

La seule façon d'obtenir de plus amples cet emplacement est-il:
emplacements = { "classpath*:applicationContext-test.xml" })
Puis je bénéficier de cette exception:
Pas de correspondance bean de type [javax.sql.Source de données] trouvé pour la dépendance: attendre au moins 1 fève qui se qualifie comme autowire candidat à cette dépendance. La dépendance des annotations: {}

Mais qui est source de confusion, parce que j'ai vraiment avoir une source de données dans mon test fichier de contexte:

<bean class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close" id="dataSource">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver" />
    <property name="url" value="jdbc:hsqldb:mem:testdb;sql.syntax_ora=true" />
    <property name="username" value="some" />
    <property name="password" value="some" />
</bean>

EIDT 2

Après avoir reconnu que le problème n'est RunWith(...) et en étendant le printemps de la classe en même temps et en supprimant tous les caractères génériques de l'emplacement du chemin d'accès. Je bénéficier de cette exception:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in class path resource [META-INF/spring/applicationContext-test.xml]: Cannot resolve reference to bean 'entityManagerFactory' while setting bean property 'entityManagerFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [META-INF/spring/applicationContext-test.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: No persistence unit with name 'persistenceUnitTest' found
... 24 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [META-INF/spring/applicationContext-test.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: No persistence unit with name 'persistenceUnitTest' found
... 40 more
Caused by: java.lang.IllegalArgumentException: No persistence unit with name 'persistenceUnitTest' found)
... 47 more

Je serais vraiment reconnaissant de toute aide!

Merci d'avance

  • Qu'essayez-vous de test? - nous l'unité de test de notre printemps contrôleurs en dehors du contexte de l'application.
  • Est-ce un projet maven, et que vous utilisez eclipse?
  • Oui @ Bedwyr: Parce que je veux vérifier si le répartiteur est de travailler correctement. C'est une sorte de integrationTest où j'ai besoin du contexte pour
InformationsquelleAutor Alexander | 2011-10-27