web-dev-qa-db-fra.com

Configuration du test de démarrage du printemps

J'ai une application de démarrage de printemps avec classe principale comme ci-dessous:

@SpringBootApplication
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

Maintenant, je veux tester mes services et créer une classe de test de base:

@SpringApplicationConfiguration(Application.class)
public abstract class TestBase {
}

Lorsque je lance mon test, je reçois une exception:

Caused by: Java.lang.IllegalArgumentException: Can not load an ApplicationContext with a NULL 'contextLoader'. Consider annotating your test class with @ContextConfiguration.
    at org.springframework.util.Assert.notNull(Assert.Java:115)
    at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.Java:117)
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.Java:148)

Puis je change de classe de test de base avec ContextConfiguration

@ContextConfiguration(classes = Application.class)
public abstract class TestBase {
}

Cette fois, je reçois une erreur d’initialisation de la source de données. Je me demande pourquoi il échoue dans le premier cas et pourquoi dans le second cas, il ne charge pas mon application.properties où j'ai configuré le datasource.

Je vous remercie!

11
sansari

Quelque chose comme ca: 

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class ApplicationTest{

   @Autowire
   Foo foo //whatever you are testing

   @Test
   public void FooTest() throws Exception{
     Foo f = foo.getFooById("22");
     assertEquals("9B". f.getCode); 
   }
 //TODO look into MockMVC for testing services
}
6
Drew1208
2
zeagord

J'ai rencontré le même problème, c'est parce que mon ServletInitializer était dans le paquet différent. Problème résolu après la correction de la structure du package.

0
Deepak Bhatia