WedX - журнал о программировании и компьютерных науках

Проблема тестового примера JUnit с получением соединения с базой данных вместе с игровой инфраструктурой, spring jdbctemplate?

Я пишу тестовый пример 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 framework и 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="https://www.springframework.org/schema/beans"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:context="https://www.springframework.org/schema/context"
    xmlns:jee="https://www.springframework.org/schema/jee"
    xsi:schemaLocation="https://www.springframework.org/schema/beans
         https://www.springframework.org/schema/beans/spring-beans-3.0.xsd
         https://www.springframework.org/schema/context
         https://www.springframework.org/schema/context/spring-context-3.0.xsd 
         https://www.springframework.org/schema/jee https://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
...
}

Ответы:


1

Кажется, вам не хватает загрузки контекста приложения. Проверьте пакет play.test.Helpers.

Попробуйте поместить ваш фактический тестовый код в следующий блок:

running(fakeApplication(), new Runnable() {
    @Override
    public void run() {
        ...your test here...
    }           
}); 
21.02.2014
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]