gpt4 book ai didi

java - JUnit 测试用例获取数据库连接以及 play 框架、spring jdbctemplate 的问题?

转载 作者:行者123 更新时间:2023-12-01 13:23:39 26 4
gpt4 key购买 nike

我正在编写JUnit 测试用例,其中尝试获取数据源的进程收到以下错误消息。

堆栈跟踪:

   java.lang.NullPointerException
at play.api.db.DB$.getDataSource(DB.scala:141)
at play.api.db.DB.getDataSource(DB.scala)
at play.db.DB.getDataSource(DB.java:22)
at dao.BaseDao.getJdbcTemplate(BaseDao.java:13)

这里,我使用的是spring jdbctemplate、play框架和JUnit。请找到我正在使用的以下资源文件。

application.conf

db.default.jndiName=DefaultDS
db.default.driver=oracle.jdbc.driver.OracleDriver
db.default.url="jdbc:oracle:thin:@//xx.xx.xx.xx:1521/XE"
db.default.user=work
db.default.pass=work
......

components.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>

BaseDao.java

package dao;

import org.springframework.jdbc.core.JdbcTemplate;

import play.db.DB;

public class BaseDao {

private JdbcTemplate jdbcTemplate;

public JdbcTemplate getJdbcTemplate() {
if (jdbcTemplate == null) {
this.jdbcTemplate = new JdbcTemplate(DB.getDataSource("default"));
}
return this.jdbcTemplate;
}

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}

}

PublishedReferenceYieldServiceImplTest.java

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:components.xml")
public class PublishedReferenceYieldServiceImplTest {
//Here I am accessing baseDAO
...
}

最佳答案

您似乎缺少加载应用程序的上下文。检查 play.test.Helpers 包。

尝试将实际的测试代码放入以下 block 中:

running(fakeApplication(), new Runnable() {
@Override
public void run() {
...your test here...
}
});

关于java - JUnit 测试用例获取数据库连接以及 play 框架、spring jdbctemplate 的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21900866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com