We had a similar experience to Carlos. Before deciding to mock out the entities we tried to instantiate them (with new) but got some errors which seemed related to the fact that AppEngine was not available. I was under the impression that it required instantiating AppEngine, either because of static initializers or in the constructor. I will look at the stack trace of that error and report back here.
Cheers, Philippe On Oct 28, 2:59 pm, Ikai Lan <[email protected]> wrote: > The Entity class is extremely lightweight: > > http://code.google.com/appengine/docs/java/javadoc/com/google/appengi... > > It's just a class with two dependencies that aren't in the Java Standard > Library: > > - DataTypeUtils, which takes care of making sure properties can be persisted > and converted > - a class that makes it compatible with our protobuf RPC implementation > > Carlos, where are you seeing that com.google.appengine.api.datastore.Entity > is slow? Can you post code? > > -- > Ikai > > > > > > > > On Thu, Oct 28, 2010 at 2:40 PM, Carlos Ble <[email protected]> wrote: > > App Engine is so great that you can not write unit tests using > > entities even if > > you don't persist them. Just calling the constructor of an entity > > makes all the datastore > > stuff load which is slow. You do not want your unit test to take 1 > > minute to run, do you? > > What we have done to be able to write unit tests is to not create > > objects directly but > > use a factory. So we have an EntitiesFactory which give us objects > > which are not actual > > entities but have the same properties. Apart from the benefit of > > running tests fast and isolated (because they are not real entities > > they can't alter database), we get a new layer that > > makes it easy to migrate to other persistence mechanisms. > > > Cheers > > > On 28 oct, 19:52, "Ikai Lan (Google)" > > <[email protected]<ikai.l%[email protected]> > > > wrote: > > > Do you need to mock Entity? Can you use a real instance of an Entity and > > > check for state changes? You can mock out DatastoreService, so it might > > make > > > more sense to write your expects() in those mocks instead. Entity classes > > > only really have getProperty() and setProperty(), and in my opinion, it's > > > not worth writing tests to see if these get called. What are you trying > > to > > > do? > > > > -- > > > Ikai Lan > > > Developer Programs Engineer, Google App Engine > > > Blogger:http://googleappengine.blogspot.com > > > Reddit:http://www.reddit.com/r/appengine > > > Twitter:http://twitter.com/app_engine > > > > On Thu, Oct 28, 2010 at 9:31 AM, Mayumi Liyanage < > > > > [email protected]> wrote: > > > > In the project I'm working on we are using GWT + GAE. We are unit > > > > testing using automocking container Jukito (http://code.google.com/p/ > > > > jukito/) which is build on top of Mokito (http://code.google.com/p/ > > > > mockito/) + JUnit. > > > > The problem is unit testing the Mapper API. Since Mapper API's map > > > > method takes an Entity as a argument so testing framework will have to > > > > have access to this Entity class. However we could not mock the Entity > > > > class since it is a final class. Also, we could not instantiate the > > > > Entity class outside of GAE environment. ' > > > > Does anyone have workaround for unit testing using Entity? > > > > > Thanks. > > > > > -- > > > > You received this message because you are subscribed to the Google > > Groups > > > > "Google App Engine" group. > > > > To post to this group, send email to [email protected] > > . > > > > To unsubscribe from this group, send email to > > > > [email protected]<google-appengine%2Bunsubscrib > > > > [email protected]> > > <google-appengine%[email protected]<google-appengine%252Bunsub > > [email protected]> > > > > > . > > > > For more options, visit this group at > > > >http://groups.google.com/group/google-appengine?hl=en. > > > -- > > You received this message because you are subscribed to the Google Groups > > "Google App Engine" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]<google-appengine%2Bunsubscrib > > [email protected]> > > . > > For more options, visit this group at > >http://groups.google.com/group/google-appengine?hl=en. -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
