You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by cleverpig <gr...@gmail.com> on 2010/08/04 09:43:25 UTC

How to using jmockit or dbunit to test DAO (hibernate) in tapestry?

JMockit allows developers to write unit and integration tests without
the testability issues typically found with other mocking tools.
It support hibernate mock too.

Sounds like very well fit with tapestry.
T5 has test ability with inject dependency itself: it can load
RegistryBuilder from test appModule to get DAO and service injections.
such as :
protected void setUp(){
    builder=new RegistryBuilder();
    builder.add(TapestryIOCModule.class);
    builder.add(HibernateCoreModule.class);
    builder.add(MiniAppModule.class); //MiniAppModule is my test app module
    reg= builder.build();
    reg.performRegistryStartup();
    ...
}

Do you know how to make db related test on jmockit or dbunit?

One simplest way: change hibernate to use hsqlDB in memory for test
environment,but how can do that to change another hibernate
configure,instead of product or development environment?
-- 
cleverpig(Dan)
Location: Beijing
Address: Room 4018,No.A2 South Avenue Fuxingmen Beijing,P.R.China
Zipcode: 100031
MSN: great_liudan@hotmail.com
QQ: 149291732
Skype: cleverpigatmatrix
Facebook ID:cleverpig
Blog: cleverpig.name/dan/
Tags: del.icio.us/cleverpig
Twitter: twitter.com/cleverpig
新浪微博: t.sina.com.cn/cleverpig
Organization: www.beijing-open-party.org
Organ@Facebook: http://www.facebook.com/group.php?gid=8159558294

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: How to using jmockit or dbunit to test DAO (hibernate) in tapestry?

Posted by cleverpig <gr...@gmail.com>.
here is my work out with upping idea:
1.make my hibernate configurer:

public class T5TestHibernateConfigurer implements HibernateConfigurer{
	private final boolean defaultConfiguration;
	private String configFile; // add configuration filepath on classpath
    public T5TestHibernateConfigurer(
            @Symbol(HibernateSymbols.DEFAULT_CONFIGURATION)
            boolean defaultConfiguration,
            String configFile)
    {
        this.defaultConfiguration = defaultConfiguration;
        this.configFile=configFile;
    }

    public void configure(Configuration configuration)
    {
        if (defaultConfiguration)
        	configuration.configure();
        else
        	configuration.configure(configFile);
    }
}

2.new one hibernate config file with hsqldb:hibernate-test.cfg.xml

3.make up hibernate core module by extending original hibernateCoreModule:
public class T5HBCoreModule extends HibernateCoreModule
{
    public static void bind(ServiceBinder binder)
    {
        binder.bind(HibernateTransactionDecorator.class,
HibernateTransactionDecoratorImpl.class);
        binder.bind(HibernateTransactionAdvisor.class,
HibernateTransactionAdvisorImpl.class);
    }

    public static T5TestHibernateConfigurer
buildT5TestHibernateConfigurer(final Logger log){
    	log.info("buildT5TestHibernateConfigurer");
    	return new T5TestHibernateConfigurer(false, "hibernate-test.cfg.xml");
    }

    public static void
contributeHibernateSessionSource(OrderedConfiguration<HibernateConfigurer>
config,
                                                        @Local

HibernateConfigurer t5TestHibernateConfigurer)
    {
        config.add("t5HBConfig", t5TestHibernateConfigurer);
        config.addInstance("PackageName", PackageNameHibernateConfigurer.class);
    }
}
3.change my DAOTestCase code by using new HibernateCoreModule(T5HBCoreModule):
public class T5DAOTestCase<T extends GenericDAO> extends TestCase {
	protected RegistryBuilder builder;
	protected Registry reg;
	protected T dao;
	protected Logger log;

	protected void setUp(){
		builder=new RegistryBuilder();
		builder.add(TapestryIOCModule.class);
	    builder.add(T5HBCoreModule.class);
	    builder.add(MiniAppModule.class);
	
	    reg= builder.build();
	    reg.performRegistryStartup();
	
	    //get daos and log service
	    Class<T> daoClass  = (Class<T>) ((ParameterizedType) getClass()
				.getGenericSuperclass()).getActualTypeArguments()[0];
	    dao= reg.getService(daoClass);
	    log= reg.getService(Logger.class);
	}
	
	protected void tearDown(){
		//for operations done from this thread
               reg.cleanupThread();
               //call this to allow services clean shutdown
               reg.shutdown();
	}
}

5.using DAOTestCase:
public class TestMyDAO extends T5DAOTestCase<MyDAO> {
...
}

Enjoy this~

On Sat, Aug 7, 2010 at 4:34 AM, cleverpig <gr...@gmail.com> wrote:
> I checked out T5-hibernate-core source code,there's possible to make a
> test module for hibernate-core module.
> in HibernateCoreModule:
>
> public class HibernateCoreModule
> {
>    public static void bind(ServiceBinder binder)
>    {
>        binder.bind(HibernateTransactionDecorator.class,
> HibernateTransactionDecoratorImpl.class);
>        binder.bind(HibernateTransactionAdvisor.class,
> HibernateTransactionAdvisorImpl.class);
>        binder.bind(HibernateConfigurer.class,
> DefaultHibernateConfigurer.class).withId("DefaultHibernateConfigurer");
>    }
>    ...
>    public static void
> contributeHibernateSessionSource(OrderedConfiguration<HibernateConfigurer>
> config,
>
>                                                        @Local
>
> HibernateConfigurer defaultHibernateConfigurer)
>    {
>        config.add("Default", defaultHibernateConfigurer);
>        config.addInstance("PackageName", PackageNameHibernateConfigurer.class);
>    }
> }
>
> It's my idea:
> 1.create a test-usage configurer like defaultConfigurer,but use hsqldb
> or sqlite.
> 2.contribute this configurer to HibernateSessionSource service in test
> module that will orverride the function above.
> 3.load this test module to build services,and then run unit test and
> integration test.
>
> It's a straw,let me try~
>
> On Fri, Aug 6, 2010 at 1:54 AM, based2 <ba...@free.fr> wrote:
>>
>> http://maven.apache.org/guides/mini/guide-building-for-different-environments.html
>> http://maven.apache.org/guides/introduction/introduction-to-profiles.html
>>
>> ==
>> http://tapestry.apache.org/tapestry5/tapestry-test/
>> http://tapestry.formos.com/projects/tapestry-testify/
>>
>> ref: http://wiki.apache.org/tapestry/Tapestry5ModuleRegistry
>>
>>
>> cleverpig-2 wrote:
>>>
>>> JMockit allows developers to write unit and integration tests without
>>> the testability issues typically found with other mocking tools.
>>> It support hibernate mock too.
>>>
>>> Sounds like very well fit with tapestry.
>>> T5 has test ability with inject dependency itself: it can load
>>> RegistryBuilder from test appModule to get DAO and service injections.
>>> such as :
>>> protected void setUp(){
>>>     builder=new RegistryBuilder();
>>>     builder.add(TapestryIOCModule.class);
>>>     builder.add(HibernateCoreModule.class);
>>>     builder.add(MiniAppModule.class); //MiniAppModule is my test app
>>> module
>>>     reg= builder.build();
>>>     reg.performRegistryStartup();
>>>     ...
>>> }
>>>
>>> Do you know how to make db related test on jmockit or dbunit?
>>>
>>> One simplest way: change hibernate to use hsqlDB in memory for test
>>> environment,but how can do that to change another hibernate
>>> configure,instead of product or development environment?
>>> --
>>> cleverpig(Dan)
>>> Location: Beijing
>>> Address: Room 4018,No.A2 South Avenue Fuxingmen Beijing,P.R.China
>>> Zipcode: 100031
>>> MSN: great_liudan@hotmail.com
>>> QQ: 149291732
>>> Skype: cleverpigatmatrix
>>> Facebook ID:cleverpig
>>> Blog: cleverpig.name/dan/
>>> Tags: del.icio.us/cleverpig
>>> Twitter: twitter.com/cleverpig
>>> 新浪微博: t.sina.com.cn/cleverpig
>>> Organization: www.beijing-open-party.org
>>> Organ@Facebook: http://www.facebook.com/group.php?gid=8159558294
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>
>>>
>>>
>>
>> --
>> View this message in context: http://old.nabble.com/How-to-using-jmockit-or-dbunit-to-test-DAO-%28hibernate%29-in-tapestry--tp29343465p29356377.html
>> Sent from the Tapestry - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>
>
>
> --
> cleverpig(Dan)
> Location: Beijing
> Address: Room 4018,No.A2 South Avenue Fuxingmen Beijing,P.R.China
> Zipcode: 100031
> MSN: great_liudan@hotmail.com
> QQ: 149291732
> Skype: cleverpigatmatrix
> Facebook ID:cleverpig
> Blog: cleverpig.name/dan/
> Tags: del.icio.us/cleverpig
> Twitter: twitter.com/cleverpig
> 新浪微博: t.sina.com.cn/cleverpig
> Organization: www.beijing-open-party.org
> Organ@Facebook: http://www.facebook.com/group.php?gid=8159558294
>



-- 
cleverpig(Dan)
Location: Beijing
Address: Room 4018,No.A2 South Avenue Fuxingmen Beijing,P.R.China
Zipcode: 100031
MSN: great_liudan@hotmail.com
QQ: 149291732
Skype: cleverpigatmatrix
Facebook ID:cleverpig
Blog: cleverpig.name/dan/
Tags: del.icio.us/cleverpig
Twitter: twitter.com/cleverpig
新浪微博: t.sina.com.cn/cleverpig
Organization: www.beijing-open-party.org
Organ@Facebook: http://www.facebook.com/group.php?gid=8159558294

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: How to using jmockit or dbunit to test DAO (hibernate) in tapestry?

Posted by cleverpig <gr...@gmail.com>.
I checked out T5-hibernate-core source code,there's possible to make a
test module for hibernate-core module.
in HibernateCoreModule:

public class HibernateCoreModule
{
    public static void bind(ServiceBinder binder)
    {
        binder.bind(HibernateTransactionDecorator.class,
HibernateTransactionDecoratorImpl.class);
        binder.bind(HibernateTransactionAdvisor.class,
HibernateTransactionAdvisorImpl.class);
        binder.bind(HibernateConfigurer.class,
DefaultHibernateConfigurer.class).withId("DefaultHibernateConfigurer");
    }
    ...
    public static void
contributeHibernateSessionSource(OrderedConfiguration<HibernateConfigurer>
config,

                                                        @Local

HibernateConfigurer defaultHibernateConfigurer)
    {
        config.add("Default", defaultHibernateConfigurer);
        config.addInstance("PackageName", PackageNameHibernateConfigurer.class);
    }
}

It's my idea:
1.create a test-usage configurer like defaultConfigurer,but use hsqldb
or sqlite.
2.contribute this configurer to HibernateSessionSource service in test
module that will orverride the function above.
3.load this test module to build services,and then run unit test and
integration test.

It's a straw,let me try~

On Fri, Aug 6, 2010 at 1:54 AM, based2 <ba...@free.fr> wrote:
>
> http://maven.apache.org/guides/mini/guide-building-for-different-environments.html
> http://maven.apache.org/guides/introduction/introduction-to-profiles.html
>
> ==
> http://tapestry.apache.org/tapestry5/tapestry-test/
> http://tapestry.formos.com/projects/tapestry-testify/
>
> ref: http://wiki.apache.org/tapestry/Tapestry5ModuleRegistry
>
>
> cleverpig-2 wrote:
>>
>> JMockit allows developers to write unit and integration tests without
>> the testability issues typically found with other mocking tools.
>> It support hibernate mock too.
>>
>> Sounds like very well fit with tapestry.
>> T5 has test ability with inject dependency itself: it can load
>> RegistryBuilder from test appModule to get DAO and service injections.
>> such as :
>> protected void setUp(){
>>     builder=new RegistryBuilder();
>>     builder.add(TapestryIOCModule.class);
>>     builder.add(HibernateCoreModule.class);
>>     builder.add(MiniAppModule.class); //MiniAppModule is my test app
>> module
>>     reg= builder.build();
>>     reg.performRegistryStartup();
>>     ...
>> }
>>
>> Do you know how to make db related test on jmockit or dbunit?
>>
>> One simplest way: change hibernate to use hsqlDB in memory for test
>> environment,but how can do that to change another hibernate
>> configure,instead of product or development environment?
>> --
>> cleverpig(Dan)
>> Location: Beijing
>> Address: Room 4018,No.A2 South Avenue Fuxingmen Beijing,P.R.China
>> Zipcode: 100031
>> MSN: great_liudan@hotmail.com
>> QQ: 149291732
>> Skype: cleverpigatmatrix
>> Facebook ID:cleverpig
>> Blog: cleverpig.name/dan/
>> Tags: del.icio.us/cleverpig
>> Twitter: twitter.com/cleverpig
>> 新浪微博: t.sina.com.cn/cleverpig
>> Organization: www.beijing-open-party.org
>> Organ@Facebook: http://www.facebook.com/group.php?gid=8159558294
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
>>
>
> --
> View this message in context: http://old.nabble.com/How-to-using-jmockit-or-dbunit-to-test-DAO-%28hibernate%29-in-tapestry--tp29343465p29356377.html
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>



-- 
cleverpig(Dan)
Location: Beijing
Address: Room 4018,No.A2 South Avenue Fuxingmen Beijing,P.R.China
Zipcode: 100031
MSN: great_liudan@hotmail.com
QQ: 149291732
Skype: cleverpigatmatrix
Facebook ID:cleverpig
Blog: cleverpig.name/dan/
Tags: del.icio.us/cleverpig
Twitter: twitter.com/cleverpig
新浪微博: t.sina.com.cn/cleverpig
Organization: www.beijing-open-party.org
Organ@Facebook: http://www.facebook.com/group.php?gid=8159558294

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: How to using jmockit or dbunit to test DAO (hibernate) in tapestry?

Posted by based2 <ba...@free.fr>.
http://maven.apache.org/guides/mini/guide-building-for-different-environments.html
http://maven.apache.org/guides/introduction/introduction-to-profiles.html

==
http://tapestry.apache.org/tapestry5/tapestry-test/
http://tapestry.formos.com/projects/tapestry-testify/

ref: http://wiki.apache.org/tapestry/Tapestry5ModuleRegistry


cleverpig-2 wrote:
> 
> JMockit allows developers to write unit and integration tests without
> the testability issues typically found with other mocking tools.
> It support hibernate mock too.
> 
> Sounds like very well fit with tapestry.
> T5 has test ability with inject dependency itself: it can load
> RegistryBuilder from test appModule to get DAO and service injections.
> such as :
> protected void setUp(){
>     builder=new RegistryBuilder();
>     builder.add(TapestryIOCModule.class);
>     builder.add(HibernateCoreModule.class);
>     builder.add(MiniAppModule.class); //MiniAppModule is my test app
> module
>     reg= builder.build();
>     reg.performRegistryStartup();
>     ...
> }
> 
> Do you know how to make db related test on jmockit or dbunit?
> 
> One simplest way: change hibernate to use hsqlDB in memory for test
> environment,but how can do that to change another hibernate
> configure,instead of product or development environment?
> -- 
> cleverpig(Dan)
> Location: Beijing
> Address: Room 4018,No.A2 South Avenue Fuxingmen Beijing,P.R.China
> Zipcode: 100031
> MSN: great_liudan@hotmail.com
> QQ: 149291732
> Skype: cleverpigatmatrix
> Facebook ID:cleverpig
> Blog: cleverpig.name/dan/
> Tags: del.icio.us/cleverpig
> Twitter: twitter.com/cleverpig
> 新浪微博: t.sina.com.cn/cleverpig
> Organization: www.beijing-open-party.org
> Organ@Facebook: http://www.facebook.com/group.php?gid=8159558294
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/How-to-using-jmockit-or-dbunit-to-test-DAO-%28hibernate%29-in-tapestry--tp29343465p29356377.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org