[
https://issues.apache.org/jira/browse/OFBIZ-2842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12752175#action_12752175
]
Philipp Hoppen commented on OFBIZ-2842:
---------------------------------------
Hi Bob
In our OFBIz-projects, we like to have automated unit-tests running on a
CruiseControl-server. Unfortunately, as OFBIz unit-tests are not directly
called from a build script, the surrounding build process will assume a
"successful" build even when the tests failed.
I guess using a Mock framework and then calling the tests from the build script
is the right solution. I checked out Mockito and it seems to do the job quite
well.
We have lots of minilang-code, so i experimented around in this area. Here is
the code to call a minilang service:
Map simpleMethods = SimpleMethod.getSimpleMethods("file:" +
pathToSimpleMethods, simpleMethodName, null);
SimpleMethod simpleMethod = (SimpleMethod)
simpleMethods.get(simpleMethodName);
simpleMethod.setUseTransaction(false);
MethodContext methodContext = new MethodContext(dctx, context, null);
simpleMethod.exec(methodContext);
SimpleMethod-objects try to aquire transactions, and this resulted in
exceptions:
java.lang.IllegalStateException: Could not find transaction factory class name
definition
Therefore, i added a setUseTransaction(boolean useTransaction) to the
SimpleMethod class. It tries to commit a transaction no matter if
useTransaction is false, so i added an if-block around the commit-code so it
only runs if useTransaction is true.
I had to write quite a lot "when(delegator...).ThenReturn(...)"-statements
until i finally got a very simple minilang service running, but it works.
I hope to find some more time to experiment around.
What exactly do you mean by "UtilResourceBundle solution"?
> Add mocked unit test framework
> ------------------------------
>
> Key: OFBIZ-2842
> URL: https://issues.apache.org/jira/browse/OFBIZ-2842
> Project: OFBiz
> Issue Type: New Feature
> Components: ALL COMPONENTS
> Affects Versions: SVN trunk
> Reporter: Bob Morley
> Attachments: mockito-all-1.8.0-rc2.jar, OFBIZ-2842.patch
>
>
> Add the ability to create "true" unit tests -- ones that only test the
> confines of the method itself and using mocking techniques and dependency
> injection. This focuses the unit test on the actual code in the method and
> makes the assumption that other methods have been properly tested and will
> work. This does not suggest that there is not also value in unit tests that
> test more of an integration between components (such as a test that will
> actually invoke services using a the real dispatcher and manipulate entities
> with the real delegator).
> The goal of this will be to make it easy and very quick to test java-based
> methods (initial focus on services) along with not having to start an ofbiz
> container creating a suite of very quick method focused unit tests.
> I have attached a first pass at some of the base classes and a sample of a
> "mostly complete" unit test for the DateDimensionServices class (which has
> one method). Looking for feedback on this approach, potential for community
> collaboration, and potential buy-in. Some other things that are still to be
> done --
> - more samples
> - integration into ant build
> - solution to the "static worker" issue
> - UtilResourceBundle solution (I have it partially commented out)
> - easy verification of service interface adherence (servicedef existance &
> IN/OUT validation)
> - potential for GenericEntity get/set validation (verify entitydef adherence)
> (may not want to do this)
> - investigate potential for mocked simple methods
> - ant driven code coverage metrics
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.