如何用Spring Autowire编写JUnit测试?

这是我使用的文件:

component.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"

xmlns:jee="http://www.springframework.org/schema/jee"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd

http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd">

<context:component-scan

base-package="controllers,services,dao,org.springframework.jndi" />

</beans>

ServiceImpl.java

@org.springframework.stereotype.Service

public class ServiceImpl implements MyService {

@Autowired

private MyDAO myDAO;

public void getData() {...}

}

ServiceImplTest.java

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration("classpath*:conf/components.xml")

public class ServiceImplTest{

@Test

public void testMyFunction() {...}

}

错误:

16:22:48.753 [main] ERROR o.s.test.context.TestContextManager - Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@2092dcdb] to prepare test instance [services.ServiceImplTest@9e1be92]

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'services.ServiceImplTest': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private services.ServiceImpl services.ServiceImplTest.publishedServiceImpl; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [services.ServiceImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:287) ~[spring-beans.jar:3.1.2.RELEASE]

回答:

确保已导入正确的程序包。如果我正确地记住,有两种不同的自动布线套件。应该 :org.springframework.beans.factory.annotation.Autowired;

这在我看来也很奇怪:

@ContextConfiguration("classpath*:conf/components.xml")

这是一个适合我的示例:

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = { "/applicationContext_mock.xml" })

public class OwnerIntegrationTest {

@Autowired

OwnerService ownerService;

@Before

public void setup() {

ownerService.cleanList();

}

@Test

public void testOwners() {

Owner owner = new Owner("Bengt", "Karlsson", "Ankavägen 3");

owner = ownerService.createOwner(owner);

assertEquals("Check firstName : ", "Bengt", owner.getFirstName());

assertTrue("Check that Id exist: ", owner.getId() > 0);

owner.setLastName("Larsson");

ownerService.updateOwner(owner);

owner = ownerService.getOwner(owner.getId());

assertEquals("Name is changed", "Larsson", owner.getLastName());

}

以上是 如何用Spring Autowire编写JUnit测试? 的全部内容, 来源链接: utcz.com/qa/408778.html

回到顶部