2014-11-04 63 views
1

您好我正在使用Spring和CDI。 在我的單元測試中,我想測試使用@Autowired註釋的類。 問題是如果我創建這個類的實例並調用一個方法,所有註釋的對象都是null。 基本的註釋工作。只是在我的單元測試它不春季4.07 Junit測試和自動佈線

這是我的單元測試。在這裏Autowired的作品。在我的測試中,我創建了DemoConsumerBean.class的一個實例,並在此處調用方法requestJobsFromPublishedJobsApi我也有一些Autowired聲明。問題是所有的實例都是空的!

@RunWith(SpringJUnit4ClassRunner.class) 
@ActiveProfiles("development") 
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, FirstbirdTestExecutionListener.class, FlywayTestExecutionListener.class }) 
@ContextConfiguration(locations = { "classpath:hibernate-spring.xml" }) 
@FlywayTest 
public class DemoConsumerBeanTest extends AbstractJUnit4SpringContextTests { 

@Autowired 
private CustomerManager customerManager; 

@Autowired 
private DemoDetailsManager demoDetailsManager; 

@Before 
public void setup() { 
    CamelContext context = new DefaultCamelContext(); 
    exchange = new DefaultExchange(context); 
} 

@Test 
public void requestJobsFromPublishedJobsApiTest() throws NoSuchDataException { 
    DemoConsumerBean demoConsumerBean = new DemoConsumerBean(); 

    customer = new Customer(); 
    customer.setCustomerId(15); 

    customer = customerManager.getCustomerById(customer); 

    // This one works 
    DemoDetails demoDetails = demoDetailsManager.getDemoDetailsByCustomerId(customer); 

    demoConsumerBean.requestJobsFromPublishedJobsApi(exchange, customer); 

    PublishedJobs apiJobs = exchange.getIn().getBody(PublishedJobs.class); 

    assertNotNull(apiJobs); 

} 

}

public class DemoConsumerBean { 

@Autowired 
protected CustomerManager customerManager; 
@Autowired 
protected DemoDetailsManager demoDetailsManager; 
@Autowired 
protected MessageLogManager messageLogManager; 

public void requestJobsFromPublishedJobsApi(Exchange exchange, Customer customer) throws NoSuchDataException { 
    //this one is null! 
    DemoDetails demoDetails = demoDetailsManager.getDemoDetailsByCustomerId(customer); 
    PublishedJobs jobs = null; 

    if (demoDetails == null || StringUtils.isBlank(demoDetails.getDemoApiUrl())) { 
     throw new NoSuchDataException("No demo data found for customer " + customer.getCustomerFirstbirdId()); 
    } 
.... 
} 

}

回答

0

使用newnew DemoConsumerBean();繞過春天,那是你的問題。

或者使用從春(即在測試自動裝配)一個DemoConsumerBean實例或添加setter方法並用它們來測試中的「手動自動裝配」在DemoConsumerBean

@Test 
public void requestJobsFromPublishedJobsApiTest() throws NoSuchDataException { 
    DemoConsumerBean demoConsumerBean = new DemoConsumerBean(); 
    demoConsumerBean.setCustomerManager(this.customerManager) 
    // etc 

一些閱讀:Spring framework reference - The IoC container

+0

嘿, 非常感謝! 現在,它的工作! – daniel 2014-11-05 05:39:00