【问题标题】:Spring AbstractTransactionalJUnit4SpringContextTests and simpleJdbcTemplateSpring AbstractTransactionalJUnit4SpringContextTests 和 simpleJdbcTemplate
【发布时间】:2012-11-09 12:43:36
【问题描述】:

我正在尝试使用AbstractTransactionalJUnit4SpringContextTests 编写集成测试。我想使用这个类的executeSQLScript 方法。

但是,当调用executeSQLScript 方法时,它会抛出NullPointerException,因为AbstractTransactionalJUnit4SpringContextTests 类的simpleJdbcTemplate 参数没有被初始化。

我的代码如下所示:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:test-services-spring-context.xml"})
@TransactionConfiguration(transactionManager = "promoTransactionManager")
public class PromoBrickDAOIT extends AbstractTransactionalJUnit4SpringContextTests {

    @Autowired
    private PromoBricksDAO promoBricksDAO;

    @Before
    public void setUp(){
        executeSqlScript("classpath:testdata/sql/PromoBrick_Create.sql",     false);
    }

    @After
    public void tearDown(){
    }

    @Test  
    public void testPromoBrickGivenBrowseTaxonomyNodeId(){
        String btxNodeId = "v1_12";
        List<PromoBrick> promoBricks =     promoBricksDAO.findByBtxNodeId(btxNodeId);
        assertNotNull(promoBricks);
        assertEquals(promoBricks.size(), 1);
        PromoBrick promoBrick = promoBricks.get(0);
        assertNotNull(promoBrick);
    }


    public void setDataSource (@Qualifier("promoDataSource") DataSource     dataSource)    {
            super.setDataSource(dataSource);
    }
}

提前感谢您的帮助!

【问题讨论】:

    标签: integration-testing spring-test


    【解决方案1】:

    您的setDataSource() 方法中缺少@Autowired

    请参阅 Spring 参考手册的 Dependency injection of test fixtures 部分中的最后一条注释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-08
      • 2013-10-18
      • 2011-08-08
      • 2012-04-27
      • 2011-08-28
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      相关资源
      最近更新 更多