Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Spring test отдельно от Spring


Автор: Severyanin 16.8.2015, 17:28
Доброго дня, форумчане. В связи с вынужденной сменой работы пришлось переодить на новую технологию. Для решения задачи тестирования SQL-запросов, которая стоит перпедо мной, отлично подходит spring-test (по крайней мере, по информации от тов. Гугла). Проблема в том, что само приложение не работает со спрингом, и к нему модуль отдельно пока прикрутить не удалось. В связи с этим возникает вопрос, можно ли действительно как это заявлено в документации использовать spring-test в приложении, которое не использует spring и, если можно, ссылку на мануал или подробный алгоиртм для новичков. Спасибо

Автор: AntonSaburov 17.8.2015, 11:02
Можно написать свое собственное приложение для тестирования, которое не будет связано с существующим. Это в общем так и делается - для тестирования существует по сути свое собственное приложение. ВОт его придется делать на Spring.

Автор: Pawl 17.8.2015, 18:35
Я так понял, что тестировать надо веб-приложение без фреймворков? Тогда для тестов запросов к БД можно использовать com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource:
Код

import com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class DataBasePoolCreator {
    public static void create() {
        try {
            System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory");
            System.setProperty(Context.URL_PKG_PREFIXES, "org.apache.naming");
            InitialContext ic = new InitialContext();
            ic.createSubcontext("java:");
            ic.createSubcontext("java:/comp");
            ic.createSubcontext("java:/comp/env");
            ic.createSubcontext("java:/comp/env/jdbc");
            MysqlConnectionPoolDataSource ds = new MysqlConnectionPoolDataSource();
            ds.setURL("jdbc:mysql://localhost:3306/eshop"); // <--insert url to database here
            ds.setUser("eshop"); //<-- self explanatory
            ds.setPassword("e-$HopP@ssw0rd"); //<-- self explanatory
            ic.bind("java:/comp/env/jdbc/eshop", ds); 
        } catch (NamingException ex) {
        }        
    }
}

Тут создается пул соединений, а в тесте из него получается dataSource, который можно передать в DAO:
Код

    ...
    @BeforeClass
    public static void setUpClass() {
        DataBasePoolCreator.create();
    }    
    
    @Before
    public void setUp() throws NamingException, SQLException {       
        Context initContext = new InitialContext();
        Context webContext = (Context)initContext.lookup("java:/comp/env");
        dataSource = (DataSource) webContext.lookup("jdbc/eshop");        
        dao = new GuestDAO(dataSource);
        when(request.getRequestDispatcher(anyString())).thenReturn(rd);
    }

    @Test
    ...


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Spring-test-otdelno-ot-Spring-id55d09e79ae201542228b4567#findElement_E7045_55d1ff35ae201514113fc976_0

Автор: Severyanin 19.8.2015, 07:15
AntonSaburov, спасибо, так и сделал. Все работает

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)