Mock services in spring application when runing on jetty -
i want run spring web application on jetty mocking services, because services call distant rest services not yet available.
i use junit classes test controllers, works using mockmvc, mockito , reflectiontestutils.setfield(..,..,..) inject mock behavior.
but want see jsps interacting , validate gui, there way mock services when running on jetty.
this jetty class :
public final class mobileuitestserver { private static final logger log = loggerfactory.getlogger(mobileuitestserver.class); private static server server; /** * constructeur. */ private mobileuitestserver() {} /** * launch server. * * @param args arguments * @throws exception error */ @suppresswarnings("pmd.signaturedeclarethrowsexception") public static void main(final string[] args) throws exception { start(1234); log.info("joining thread server thread..."); server.join(); } /** * start mobile ui server. * * @param port port * @throws exception error */ @suppresswarnings("pmd.signaturedeclarethrowsexception") public static void start(int port) throws exception { log.info("starting server on port {}", port); server = new server(port); webappcontext webapp = new webappcontext(); webapp.setcontextpath("/"); webapp.setdescriptor("src/main/webapp/web-inf/web.xml"); webapp.setresourcebase("src/main/webapp"); server.sethandler(webapp); server.start(); log.info("server started"); } /** * stop server. * * @throws exception error */ @suppresswarnings({"pmd.avoidthrowingrawexceptiontypes", "pmd.signaturedeclarethrowsexception"}) public static void stop() throws exception { if(server == null || !server.isrunning()) { throw new runtimeexception("server not running..."); } log.info("stopping server"); server.stop(); log.info("server stopped"); } }
i assume (i not know version of spring use, modules , context configuration) have kind of service written using springdata, jpa, hibernate idea use embedded database such h2 providing mock data , same sql schema have written. have substitute datasource object.
if want write more versatile solution use spring's profiles in order define context objects w.r.t. environment want run webapp (i.e. test, development, production , on).
for instance:
<bean id="transactionmanager" class="org.springframework.orm.jpa.jpatransactionmanager"> <property name="entitymanagerfactory" ref="emf"/> </bean> <tx:annotation-driven transaction-manager="transactionmanager"/> <bean id="emf" class="org.springframework.orm.jpa.localcontainerentitymanagerfactorybean"> <property name="datasource" ref="datasource"/> <property name="jpavendoradapter"> <bean class="org.springframework.orm.jpa.vendor.hibernatejpavendoradapter"/> </property> <property name="packagestoscan" value="com.contrastofbeauty.mydomain"/> <property name="jpaproperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.h2dialect</prop> <prop key="hibernate.max_fetch_depth">3</prop> <prop key="hibernate.jdbc.fetch_size">50</prop> <prop key="hibernate.jdbc.batch_size">10</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> <context:annotation-config/> <jpa:repositories base-package="com.contrastofbeauty.myrepository" entity-manager-factory-ref="emf" transaction-manager-ref="transactionmanager"/> here defined datasource h2 database, schema loaded , data.
<beans profile="dev"> <jdbc:embedded-database id="datasource" type="h2"> <jdbc:script location="classpath:schema.sql"/> <jdbc:script location="classpath:dev-data.sql"/> </jdbc:embedded-database> </beans> here example of test using springdata, springtest , spring's profiles.
i hope helps.
latest thing: why not use maven manage project , maven jetty plugin? can start web application inside ide (eclipse, intellij, etc) me easier not know requirements.
Comments
Post a Comment