Spring JUnit测试使用TestContext.retrieveContextLoaderClass获取NullPointerException(TestContext .java:197)

时间:2011-06-02 14:45:56

标签: spring junit nullpointerexception

使用Helios,spring 3.0.5(TestContext Framework)和JUnit 4.7。我收到一个初始化错误,表明它找不到ContextConfiguration。我在后台运行了ProcMon并确定它显然没有看到所有。我已经尝试了xml文件的逻辑位置无济于事。我不清楚我做错了什么。这是代码:

package com.hwcs.veri.agg.dao;

import static org.junit.Assert.assertEquals;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
import com.hwcs.veri.jpa.License;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/JpaIntegrationTests-context.xml" })
@TransactionConfiguration( transactionManager = "transactionManager", 
                       defaultRollback    = true )
@Transactional
public class JpaIntegrationTests 
 extends     AbstractTransactionalJUnit4SpringContextTests 
{
  @Autowired
  protected LicenseDao licenseDao;
  @Test
  public void getLicenses()
  {
    List<License> licenses = this.licenseDao.getLicenses();   
    assertEquals( "Expecting 1 license from the query",
              super.countRowsInTable( "product_schema.license" ),
              licenses.size() );                  
  }
}

在Eclipse中作为JUnit测试运行它需要做一些特定的步骤吗?

2 个答案:

答案 0 :(得分:1)

首先,将org.springframework.test.context的日志级别设置为DEBUG。这应该告诉你Spring TestContext Framework(TCF)正在做的一切。

请注意,使用上述配置,TCF将尝试从classpath:/JpaIntegrationTests-context.xml(即类路径的根目录)加载应用程序上下文。因此,请确保JpaIntegrationTests-context.xml文件实际上存在于类路径的根目录中(例如,/ src / test / resources / JpaIntegrationTests-context.xml用于Maven项目布局)。对于Maven项目布局,您需要确保将/ src / test / resources配置为IDE中的源文件夹。

如果这对您解决问题没有帮助,请从日志中发布DEBUG输出。

此致

Sam(Spring TestContext Framework的作者)

答案 1 :(得分:0)

引用Java Project: Failed to load ApplicationContext

“从Sping-Documentation:普通路径,例如”context.xml“,将被视为来自定义测试类的同一个包中的类路径资源。以斜杠开头的路径被视为完全限定的类路径位置,例如“/org/example/config.xml”。