Как вы запускаете Rest sure на тестовой базе данных?

Я использую Rest sure, и мне интересно, как я могу изменить базу данных, с которой он работает?

В настоящее время я тестирую свое приложение, которое подключается к базе данных, содержащей все мои данные, однако оно работает медленно. Я хочу быть уверенным в использовании моей тестовой базы данных. Как я могу это сделать? Нужно ли мне использовать второй сервер, который подключается только к базе данных только с некоторыми моими данными?


person LuckyLuke    schedule 15.09.2013    source источник


Ответы (2)


БД тесты медленные. период. сетевые тесты (через http) тоже медленные. прежде всего: что вы хотите сделать? если мы говорим о модульном тестировании, то вы делаете это неправильно. в модульных тестах вы не должны тестировать все, от json через http до db. старайтесь избегать обоих. если ваш стек фреймворка поддерживает его (например, spring-mvc), вы можете протестировать свои привязки json без https-трафика. если нет, отделите тесты привязки http от бизнес-логики (издевайтесь над своими услугами). то же самое с базой данных. протестируйте только свой дао/репозиторий без чего-либо еще.

когда у вас есть много небольших тестов, вы можете легко отделить более медленные (сеть, БД, дымовой тест интеграции) от быстрых (бизнес-логика) и поместить их в разные группы. затем вы также можете выборочно запускать только определенную группу (в зависимости от того, какую часть вы меняете в данный момент). также на jenkins вы можете иметь отдельные этапы для каждой группы. таким образом, вы получите быструю обратную связь от вашего ci, если ваша бизнес-логика не сработает, и если они пройдут, то jenkins будет выполнять также более медленные тесты.

если по какой-либо причине вы не хотите уменьшать свои тесты, рассмотрите возможность подключения к db только один раз (перед вашими тестами) и не закрывайте это соединение. это ускорит выполнение всех тестов в целом. если ваш тест изменяет содержимое базы данных, попробуйте сохранить его как одну транзакцию и выполнить откат после теста. таким образом вы избежите настройки db перед каждым тестом

person piotrek    schedule 23.09.2013
comment
То есть вы имеете в виду, что более медленные тесты выполняются Jenkins, а модульное тестирование находится на стадии разработки? - person LuckyLuke; 02.10.2013
comment
почти: jenkins должен запускать всевозможные тесты, для всех баз данных, браузеров, интеграции, модульных тестов и т. д. все. если вы разделите их на группы, в среднем вы получите сообщение об ошибке раньше. также вы можете разнести разные группы по разным машинам и запускать их параллельно. разработчик должен запускать тесты, которые он считает необходимыми. я запускаю все быстрые тесты почти во время каждого теста ctrl + s и db непосредственно перед отправкой в ​​источник - person piotrek; 02.10.2013
comment
REST Assured также поддерживает Spring MVC с новым модулем spring-mock-mvc. - person Johan; 22.01.2014

Если вы хотите использовать базу данных для тестов, используйте встроенную базу данных (например, h2 в памяти).

В вашем config.xml:

<beans>

    ....
    <!-- override your datasource bean named myDataSource -->
    <jdbc:initialize-database data-source="myDataSource">
         <!-- sql script with create tables -->
        <jdbc:script location="init_database.sql"/>
         <!-- sql script with insert -->
        <jdbc:script location="seed_database.sql"/>
    </jdbc:initialize-database>  
</beans>
person vaugham    schedule 25.07.2014