Play Framework Junit тестовый кейс Db ошибка - PullRequest
1 голос
/ 24 октября 2011

Я новичок в игре Framework и Junit.Иметь немного знаний в Java.На основе начала работы с фреймворком и документации я начал писать модульные тесты для игрового приложения.Когда я запускаю приложение в обычном режиме.Он отлично работает с моделями баз данных.

при запуске приложения в тестовом режиме. показывает исключение запроса jpa и схему не найдено.

Прикреплен файл класса теста для справки: -

import org.junit.*;
import java.net.*;
import java.util.*;
import play.test.*;
import play.test.FunctionalTest.URL;
import models.*;
import params.*;

public class BasicTest extends UnitTest {



    @Test
    public void testing(){

        //User user = null;
        User user = User.find("byUsernameAndPassword","admin","Y29tcGFzczEyMw==").first();
        assertNotNull(user);
        //assertNotNull("test");
    }

}

Кто-нибудь поможет мне решить эту проблему.

Это мои текущие настройки application.conf в игре:

db.url=jdbc:vertica://verticadatabaseurlurl/XXXXXXX
db.driver=com.vertica.Driver
db.user=XXXXX
db.pass=XXXXXX
db.schema=XXXXXX

# JPA Configuration (Hibernate)
# ~~~~~
#
# Specify the custom JPA dialect to use here (default to guess):
 jpa.dialect=org.hibernate.dialect.PostgreSQLDialect
#
# Specify the ddl generation pattern to use. Set to none to disable it 
# (default to update in DEV mode, and none in PROD mode):
 jpa.ddl=none
#
# Debug SQL statements (logged using DEBUG level):
 jpa.debugSQL=true
#
# You can even specify additional hibernate properties here:
# hibernate.use_sql_comments=true
# ...
#
#%test.module.cobertura=${play.path}/modules/cobertura
%test.application.mode=dev
%test.db.url=jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
%test.db=mem
%test.jpa.ddl=create
%test.mail.smtp=mock

В настоящее время я использую vertica для базы данных.По этим настройкам можно запускать приложение в обычном режиме.В тестовом режиме эта проблема возникает.

http://tinypic.com/r/a48zg4/7 - ссылка на снимок экрана

1 Ответ

2 голосов
/ 24 октября 2011

Какую конфигурацию JPA вы используете для юнит-тестов. Более конкретно, что такое persistence.xml, который вы используете для модульных тестов. Возможно, вам нужно добавить параметр конфигурации автогенерации схемы в используемый вами модуль сохраняемости теста, например:

<persistence-unit name="emApplicationManaged_forTests_h2" transaction-type="RESOURCE_LOCAL">  
    <class>model.Employee</class>  
    <!-- your Entity classes here --> 
    <properties>  
        <!-- your hibernate specific params here -->
        <!-- the below parameter tells hibernate to create the schema when you start your app (test) and to erase it when it finishes: -->
        <property name="hibernate.hbm2ddl.auto" value="create-drop" />    
    </properties>  
</persistence-unit>

Выше приведено для использования реализации Hibernate JPA. Если вы используете Toplink, попробуйте:

<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="todos" transaction-type="RESOURCE_LOCAL">
        <!-- entity classes -->
        <properties>
            <!-- eclipselink specific config-->
            <!-- EclipseLink should create the database schema automatically -->
            <property name="eclipselink.ddl-generation" value="create-tables" />
            <property name="eclipselink.ddl-generation.output-mode" value="database" />
        </properties>
    </persistence-unit>
</persistence>

Для платформы Play у вас есть специальные параметры конфигурации, которые начинаются с test. префикс. Попробуйте это: откройте файл конфигурации application.conf и добавьте строки, которые настраивают среду тестирования для автоматического создания схемы БД:

%test.db=mem
%test.jpa.ddl=create-drop

Затем попробуйте свои тесты со страницы запуска тестового модуля Play (localhost: 9090 / @ tests #)

Также ознакомьтесь с этой шпаргалкой Play, она довольно полезна (я думаю, что глава «Среда Multidev» имеет отношение к вашей конкретной проблеме):

http://playcheatsheet.appspot.com/show/ArtemMedeu/armed/play-cheatsheets

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...