Hi Carsten,

I guess you found some explanations in "sourceSets{" ?

HTH

Jacques

Le 11/09/2024 à 10:32, Carsten Schinzer a écrit :
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