A little update here:

This morning I found that when I place the integration tests in the main source 
tree they will not be executed in the JUnit run AND will be found by the 
testIntegration command.

So the (my?) misconception was to place the integration tests in the test 
source tree.
So for some code level separation of test vs main code, I shall convert the 
integration tests to Groovy alike many applications do as well.

Have a great day


Carsten
 

> Am 10.09.2024 um 23:08 schrieb Carsten Schinzer 
> <cars...@dcs-verkaufssysteme.de>:
> 
> Hello again,
> 
> 
> Digging a bit deeper I find that the integration test config throws a 
> java.lang.ClassNotFoundException for the four test classes I have implemented 
> when I run
> 
> ./gradlew "ofbiz --test component=cdc-tickets --test loglevel=info".
> 
> Disturbingly the compiler and the unit test framework find them, but for the 
> above command they appear missing on the class path. I can only conclude 
> something might be wrong with my test configuration XML.
> 
> Here it is:
> 
> <test-suite suite-name="cdc-tickets-tests"
>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>         
> xsi:noNamespaceSchemaLocation="https://ofbiz.apache.org/dtds/test-suite.xsd";>
>     <test-group case-name="event-reservation-tests">
>         <entity-xml action="load" 
> entity-xml-url="component://cdc-tickets/testdef/data/DcsTicketsTestData.xml"/>
>         <entity-xml action="load" 
> entity-xml-url="component://cdc-tickets/testdef/data/SeatsAndTicketsTestData.xml"/>
>         <junit-test-suite 
> class-name="de.dcs.ofbiz.event.reservation.service.ReservationServicesTest"/>
>         <junit-test-suite 
> class-name="de.dcs.ofbiz.event.reservation.repository.EventRepositoryTest"/>
>         <junit-test-suite 
> class-name="de.dcs.ofbiz.event.reservation.repository.ReservationRepositoryTest"/>
>         <junit-test-suite 
> class-name="de.dcs.ofbiz.event.reservation.repository.TicketRepositoryTest"/>
>     </test-group>
> </test-suite>
> The alternative (ungrouped) also does fail with the same exception:
> 
> <test-suite suite-name="cdc-tickets-tests"
>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>         
> xsi:noNamespaceSchemaLocation="https://ofbiz.apache.org/dtds/test-suite.xsd";>
>     <test-case case-name="dcs-test-data">
>         <entity-xml action="load" 
> entity-xml-url="component://cdc-tickets/testdef/data/DcsTicketsTestData.xml"/>
>     </test-case>
>     <test-case case-name="seats-ticket-test-data">
>         <entity-xml action="load" 
> entity-xml-url="component://cdc-tickets/testdef/data/SeatsAndTicketsTestData.xml"/>
>     </test-case>
>     <test-case case-name="event-reservation-services">
>         <junit-test-suite 
> class-name="de.dcs.ofbiz.event.reservation.service.ReservationServicesTest"/>
>     </test-case>
>     <test-case case-name="event-repository-tests">
>         <junit-test-suite 
> class-name="de.dcs.ofbiz.event.reservation.repository.EventRepositoryTest"/>
>     </test-case>
>     <test-case case-name="reservation-repository-tests">
>         <junit-test-suite 
> class-name="de.dcs.ofbiz.event.reservation.repository.ReservationRepositoryTest"/>
>     </test-case>
>     <test-case case-name="ticket-repository-tests">
>         <junit-test-suite 
> class-name="de.dcs.ofbiz.event.reservation.repository.TicketRepositoryTest"/>
>     </test-case>
> </test-suite>
> As said, any guidance to crack this issue is welcome.
> 
> Warm regards
> 
> 
> Carsten
> 
>> Am 10.09.2024 um 10:47 schrieb Carsten Schinzer 
>> <cars...@dcs-verkaufssysteme.de>:
>> 
>> Hello all,
>> 
>> 
>> Me again. I forgot to mention here that actually now I do execute the Unit 
>> Tests, but also three integration test classes are executed as part of the 
>> JUnit run.
>> 
>> All three are extensions to org.apache.ofbiz.service.testtools.OFBizTestCase 
>> and to not define any Unit @Test annotation on the class methods. Yet they 
>> are recognized and executed … and fail of course since the data load has not 
>> occurred.
>> 
>> Any advice you might have is much appreciated.
>> Warm regards
>> 
>> 
>> Carsten
>> 
>>> Am 10.09.2024 um 10:36 schrieb Carsten Schinzer 
>>> <cars...@dcs-verkaufssysteme.de>:
>>> 
>>> Hello all,
>>> 
>>> 
>>> Thanks to the help of Gaetan, we have been Abel to spot the issue:
>>> 
>>> > I had attempted to install and run JUnit5 testing in my component only 
>>> > which obviously does not work as JUnit5 Test annotation would not be 
>>> > recognized by the Gradle build tool.
>>> 
>>> Therefore, in order to resolve this, I had to rework all Unit tests to 
>>> comply with JUnit4 which - since I had quite a number of parameterized 
>>> tests - was quite an effort.
>>> 
>>> In order to move on to more recent test concepts, namely parameterized 
>>> testing but also improved test architecture with a better separation of 
>>> asserts into a package instead of a class which enables custom asserts I 
>>> have logged a relate feature request here: 
>>> https://issues.apache.org/jira/browse/OFBIZ-13138.
>>> I am happy to contribute to this myself, yet with this issue I have also 
>>> learned that I do not fully understand the gradle build setup for OfBiz and 
>>> would need quite some guidance.
>>> 
>>> So if anyone would like to pull on this with me - please let me know!
>>> 
>>> Thanks again to Gaetan, this current project is now moving forward again!
>>> 
>>> Warm regards
>>> 
>>> 
>>> Carsten
>>> 
>>> 
>>>> Am 21.06.2024 um 11:17 schrieb Carsten Schinzer 
>>>> <cars...@dcs-verkaufssysteme.de>:
>>>> 
>>>> Hi Gaetan,
>>>> 
>>>> Thanks to get back to me. I see no change - all the things you applied I 
>>>> already did.
>>>> I also added your test case to the code and ran that locally - the test is 
>>>> obviously not found.
>>>> 
>>>> It might have to do with the fact that I prefer JUnit 5 because of its 
>>>> advanced parametrized testing features?
>>>> I can give you access to the code repo if you have a Gitlab account.
>>>> 
>>>> When running tests locally, I do not see any test reports for my classes, 
>>>> so this is the indicator I am using.
>>>> Also, I have test cases that should fail with the current code state.
>>>> 
>>>> So situation is unchanged unfortunately.
>>>> Warm regards
>>>> 
>>>> 
>>>> Carsten
>>>> 
>>>>> Am 20.06.2024 um 16:58 schrieb Gaetan <gaetan.chabous...@nereide.fr>:
>>>>> 
>>>>> Hi Carsten, do you have any updates on your case ?
>>>>> 
>>>>> Regards,
>>>>> 
>>>>> Gaetan
>>>>> 
>>>>> On 6/11/24 09:58, Gaetan wrote:
>>>>>> Hello Carsten.
>>>>>> 
>>>>>> I set up a very small example plugin that i tested myself localy. Could 
>>>>>> you please reproduce the steps below ?
>>>>>> 
>>>>>> - get ofbiz framework from apache repo 
>>>>>> (https://github.com/apache/ofbiz-framework)
>>>>>> 
>>>>>>   - checkout trunk on ofbiz framework
>>>>>> 
>>>>>> - get example plugin and set it up inside plugins 
>>>>>> (https://github.com/gtchaboussie/ofbiz-demo-test-plugin)
>>>>>> 
>>>>>> at the ofbiz root location, run `./gradlew test`. The build should fail 
>>>>>> (this means the test in the plugin is runned) with this error:
>>>>>> 
>>>>>> ```
>>>>>> 
>>>>>> org.test.TestClass > test FAILED
>>>>>>    java.lang.AssertionError at TestClass.java:9
>>>>>> 
>>>>>> ```
>>>>>> 
>>>>>> This gives you a template or example of a unit test.
>>>>>> 
>>>>>> As you can see, you should not have to update anything on the base 
>>>>>> framework for your tests yo be runned.
>>>>>> 
>>>>>> Also, could you share your OS and OFBiz version ?
>>>>>> 
>>>>>> Regards,
>>>>>> 
>>>>>> Gaetan
>>>>>> 
>>>>>> On 6/10/24 19:13, Carsten Schinzer wrote:
>>>>>>> Hello Gaetan,
>>>>>>> 
>>>>>>> 
>>>>>>> I do all this as you describe, source path for tests is as required and
>>>>>>> tests are properly annotated.
>>>>>>> The main difference is that this is not a unit test out of a framework, 
>>>>>>> but
>>>>>>> unit tests sitting in a plugin component.
>>>>>>> 
>>>>>>> I so not see any traces of the framework stepping into my test 
>>>>>>> directories
>>>>>>> when executing test (I ran .gradlew test —info to get more info).
>>>>>>> 
>>>>>>> IMO something is probably missing in my build.gradle:
>>>>>>> 
>>>>>>> /*…*/
>>>>>>> 
>>>>>>> dependencies {
>>>>>>>     // information: the ofbiz:release22.01 is on
>>>>>>> jakarta.ws.rs:jakarta.ws.rs-api:2.1.6
>>>>>>>     pluginLibsCompile 'org.glassfish.jersey.inject:jersey-hk2:2.31'
>>>>>>>     pluginLibsCompile
>>>>>>> 'org.glassfish.jersey.containers:jersey-container-servlet:2.31'
>>>>>>>     pluginLibsCompile
>>>>>>> 'org.glassfish.jersey.media:jersey-media-json-jackson:2.31'
>>>>>>>     pluginLibsCompile 'javax.json:javax.json-api:1.1.4'
>>>>>>>     pluginLibsCompile 'jakarta.inject:jakarta.inject-api:2.0.1'
>>>>>>>     pluginLibsCompile 'jakarta.ws.rs:jakarta.ws.rs-api:2.1.6'
>>>>>>>     pluginLibsCompile 
>>>>>>> 'com.fasterxml.jackson.core:jackson-annotations:2.16.1'
>>>>>>>     pluginLibsCompile 'com.fasterxml.jackson.core:jackson-core:2.16.1'
>>>>>>>     pluginLibsCompile 
>>>>>>> 'com.fasterxml.jackson.core:jackson-databind:2.16.1'
>>>>>>>     pluginLibsCompile
>>>>>>> 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.16.1'
>>>>>>>     // Swagger Annotations for OpenAPI
>>>>>>>     pluginLibsCompile 'io.swagger.core.v3:swagger-annotations:2.2.20'
>>>>>>>     // Swagger JAX-RS Integration for OpenAPI
>>>>>>>     pluginLibsCompile 'io.swagger.core.v3:swagger-jaxrs2:2.2.20'
>>>>>>>     // Swagger UI
>>>>>>>     pluginLibsCompile 'org.webjars:swagger-ui:4.1.3'
>>>>>>>     // Junit core, api and parameterization
>>>>>>>     pluginLibsCompile 'org.junit.jupiter:junit-jupiter:5.10.0'
>>>>>>>     pluginLibsCompile 'org.junit.jupiter:junit-jupiter-api:5.10.0'
>>>>>>>     pluginLibsCompile 'org.junit.jupiter:junit-jupiter-params:5.10.0'
>>>>>>> }
>>>>>>> 
>>>>>>> task install {
>>>>>>>     doLast {
>>>>>>>         // Install logic for this plugin
>>>>>>>     }
>>>>>>> }
>>>>>>> 
>>>>>>> task uninstall {
>>>>>>>     doLast {
>>>>>>>         // uninstall logic for this plugin
>>>>>>>     }
>>>>>>> }
>>>>>>> 
>>>>>>> 
>>>>>>> I have dependencies on JUnit 5 since I want to use the ParameterizedTest
>>>>>>> feature available there. Maybe that is the issue. I also cannot find a
>>>>>>> passing build when stating these dependencies as pluginCompileOnly 
>>>>>>> either.
>>>>>>> 
>>>>>>> So almost certainly this is rather a hook into the test executionon 
>>>>>>> grade
>>>>>>> side, WDYT?
>>>>>>> 
>>>>>>> Thanks for your comments so far!
>>>>>>> Warm regards
>>>>>>> 
>>>>>>> 
>>>>>>> Carsten
>>>>>>> 
>>>>>>> 
>>>>>>> Am 10.06.2024 um 17:54 schrieb Gaetan <gaetan.chabous...@nereide.fr>:
>>>>>>> 
>>>>>>> Hi again,
>>>>>>> 
>>>>>>> After some research, it seems you should follow this kind of structure 
>>>>>>> for
>>>>>>> your unit tests :
>>>>>>> 
>>>>>>> https://github.com/apache/ofbiz-framework/blob/7c2487bc3f1a6ec472585c27d7ceb5ca19471387/build.gradle#L259
>>>>>>>  
>>>>>>> 
>>>>>>> So you should setup your tests at the right package (either groovy or 
>>>>>>> java
>>>>>>> according to build instructions) and add the test decorator like this
>>>>>>> example
>>>>>>> 
>>>>>>> https://github.com/apache/ofbiz-framework/blob/7c2487bc3f1a6ec472585c27d7ceb5ca19471387/framework/base/src/test/java/org/apache/ofbiz/base/container/ComponentContainerTest.java#L63
>>>>>>>  
>>>>>>> 
>>>>>>> Please let me know if you encounter any more trouble !
>>>>>>> 
>>>>>>> Regards
>>>>>>> 
>>>>>>> Gaetan
>>>>>>> 
>>>>>>> On 6/10/24 16:55, Carsten Schinzer wrote:
>>>>>>> 
>>>>>>> … and after some more assertions, I can add:
>>>>>>> I have verified the paths to all my test suites to point to the correct
>>>>>>> Java classes.
>>>>>>> I do not find any error in the test logs.
>>>>>>> I do find the classes in the build/classes/java/test directory.
>>>>>>> I do not find related test results at all.
>>>>>>> 
>>>>>>> An hint you can give me is appreciated!
>>>>>>> Warm regards
>>>>>>> 
>>>>>>> 
>>>>>>> Carsten
>>>>>>> 
>>>>>>> Am 10.06.2024 um 15:47 schrieb Carsten Schinzer <
>>>>>>> cars...@dcs-verkaufssysteme.de>:
>>>>>>> 
>>>>>>> Hello,
>>>>>>> 
>>>>>>> 
>>>>>>> You mean like this:
>>>>>>> 
>>>>>>> <test-suite loader="main" location="testdef/CdcTicketsTests.xml“/
>>>>>>> Yes, I think I did it well like that. no?
>>>>>>> Warm regards
>>>>>>> 
>>>>>>> 
>>>>>>> Carsten
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> Am 10.06.2024 um 09:17 schrieb Gaetan <gaetan.chabous...@nereide.fr>:
>>>>>>> 
>>>>>>> Hi Carsten, did you include your tests in the ofbiz-component file a the
>>>>>>> root of your plugin ?
>>>>>>> 
>>>>>>> Best regards
>>>>>>> 
>>>>>>> Gaetan
>>>>>>> 
>>>>>>> On 6/9/24 21:15, Carsten Schinzer wrote:
>>>>>>> 
>>>>>>> Hello all,
>>>>>>> 
>>>>>>> 
>>>>>>> I am looking for a reference to integrate my plugin unit tests into the
>>>>>>> test run of OfBiz, i.e. when I run
>>>>>>> 
>>>>>>> ./gradlew test
>>>>>>> 
>>>>>>> My defined test suite should be included and executed.
>>>>>>> 
>>>>>>> I did browse the official plugin repository and found no reference.
>>>>>>> 
>>>>>>> First issue: how to define the hook into the test task in build.gradle.
>>>>>>> Second: Ho to make sure, the build.gradle dependencies on JUnit are only
>>>>>>> loaded for test and not packaged.
>>>>>>> 
>>>>>>> Does anyone have an example possibly how to do this.
>>>>>>> 
>>>>>>> Thanks & warm regards
>>>>>>> 
>>>>>>> 
>>>>>>> Carsten
>>>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to