Vraag Unit-testen Spring MVC web-app: veld kan niet worden verzonden: private javax.servlet.ServletContext


Ik zou tests willen maken voor mijn web-app, maar de contextconfiguratie loopt vast bij het automatisch verzenden servletContext. Fout hieronder. Autowiring servletContext werkt goed wanneer ik een web-app op een tomcat / steiger rijd.

java.lang.IllegalStateException: laden van ApplicationContext mislukt ...   Veroorzaakt door: org.springframework.beans.factory.BeanCreationException:   Fout bij het maken van bean met de naam 'testController': injectie van automatisch geladen   afhankelijkheden mislukt; geneste uitzondering is   org.springframework.beans.factory.BeanCreationException: Could not   automatisch veld: privé javax.servlet.ServletContext   com.test.controllers.TestController.servletContext; geneste uitzondering   is org.springframework.beans.factory.NoSuchBeanDefinitionException: Nee   overeenkomende bean van het type [javax.servlet.ServletContext] gevonden voor   afhankelijkheid: verwacht ten minste 1 boon die zich kwalificeert als autowire   kandidaat voor deze afhankelijkheid. Afhankelijkheidsannotaties:   {@ Org.springframework.beans.factory.annotation.Autowired (required = true)}

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class FirstTest {

    @Test
    public void doTest() throws Exception {
        // ...  
    }
}

TestController

@Controller
public class TestController {

    @Autowired
    private ServletContext servletContext;

    ... 
}

11
2017-09-19 13:16


oorsprong


antwoorden:


Volgens ptomli hint, bepalend MockServletContext bonen doen het.

<bean class="org.springframework.mock.web.MockServletContext"/>

Een ander probleem, dat bleek was tilesConfigurer, dat werkt niet:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'tilesConfigurer' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException

Soultion: aparte tiles config van applicationContext.xml en gebruik geen tiles in jUnit-tests.

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:applicationContext.xml
            classpath:tilesConfig.xml
        </param-value>
    </context-param>
</web-app>

25
2017-09-21 08:11



Ik heb toegevoegd @WebAppConfiguration onder de testklasse en het probleem verdwenen


10
2017-09-24 13:47