Page 1 of 1
Example of integration / unit tests framework actions
Posted: Thu Mar 04, 2021 12:52 pm
by Johann
Hello everyone,
Is there a suggested way / example to perform integration / unit tests on actions or DocumentFilter implemented in a framework ?
The goal will be for example to have an input XML, call an action defined in the framework, check the output XML with the expected one.
The front end part is not necessary in that case.
Regards,
Johann
Re: Example of integration / unit tests framework actions
Posted: Thu Mar 04, 2021 2:09 pm
by Radu
Hi Johann,
You can create high level JUnit tests using an Oxygen installation:
https://www.oxygenxml.com/doc/versions/ ... -sdk2.html
Regards,
Radu
Re: Example of integration / unit tests framework actions
Posted: Thu Mar 04, 2021 6:09 pm
by cristi_talau
Hello,
If you want to write unit tests for Web Author customizations you can use the instructions here:
https://www.oxygenxml.com/doc/versions/ ... lugin.html .
Best,
Cristian
Re: Example of integration / unit tests framework actions
Posted: Mon Nov 22, 2021 8:22 pm
by Johann
Hello,
I cannot find the class
ro.sync.exml.workspace.api.PluginWorkspaceTCBase described in
https://www.oxygenxml.com/doc/versions/ ... -sdk2.html.
Has this class been renamed ? moved ?
Thanks,
Johann
Re: Example of integration / unit tests framework actions
Posted: Tue Nov 23, 2021 12:10 pm
by Radu
Hi Johann,
It seems you are right, I added an internal issue to add it back. In the meantime you can use an older Oxygen kit for your tests.
Regards,
Radu
Re: Example of integration / unit tests framework actions
Posted: Tue Nov 23, 2021 1:01 pm
by Johann
Hi Radu,
Can you tell me the last version of oxygen.jar this class is present ?
I tried 23 / 22 / 19 but I did not find it.
Is there any alternative in recent versions to perform unit tests on framework actions ?
Thanks,
Johann
Re: Example of integration / unit tests framework actions
Posted: Tue Nov 23, 2021 1:15 pm
by Radu
Hi Johann,
I found it in Oxygen 21.1. At some point we mavenized our project and that is probably the version when the base class started to get excluded.
Regards,
Radu
Re: Example of integration / unit tests framework actions
Posted: Tue Nov 23, 2021 3:47 pm
by Johann
Hi Radu,
I managed to write my first test class by getting the Oxygen Editor 21.1 oxygen.jar.
However, it fails when initializing PluginWorkspaceTCBase with this error:
Code: Select all
junit.framework.AssertionFailedError: Exception in constructor: testOpenFileAndBoldEXM_20417 (java.lang.NoClassDefFoundError: ro/sync/security/AbstractInteractiveChecker
at ro.sync.exml.workspace.api.PluginWorkspaceTCBase.<init>(Unknown Source)
at com._4dconcept.adam.author.framework.S1000D.TestFrameworkActions.<init>(TestFrameworkActions.java:12)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at junit.framework.TestSuite.createTest(TestSuite.java:59)
at junit.framework.TestSuite.addTestMethod(TestSuite.java:296)
at junit.framework.TestSuite.addTestsFromTestCase(TestSuite.java:139)
at junit.framework.TestSuite.<init>(TestSuite.java:118)
at org.junit.internal.runners.JUnit38ClassRunner.<init>(JUnit38ClassRunner.java:78)
at org.junit.internal.builders.JUnit3Builder.runnerForClass(JUnit3Builder.java:11)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:37)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:70)
at org.junit.internal.requests.ClassRequest.createRunner(ClassRequest.java:28)
at org.junit.internal.requests.MemoizingRequest.getRunner(MemoizingRequest.java:19)
at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:36)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:50)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:64)
Caused by: java.lang.ClassNotFoundException: ro.sync.security.AbstractInteractiveChecker
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 27 more
)
at junit.framework.Assert.fail(Assert.java:57)
at junit.framework.TestCase.fail(TestCase.java:223)
at junit.framework.TestSuite$1.runTest(TestSuite.java:96)
at junit.framework.TestCase.runBare(TestCase.java:142)
at junit.framework.TestResult$1.protect(TestResult.java:122)
at junit.framework.TestResult.runProtected(TestResult.java:142)
at junit.framework.TestResult.run(TestResult.java:125)
at junit.framework.TestCase.run(TestCase.java:130)
at junit.framework.TestSuite.runTest(TestSuite.java:241)
at junit.framework.TestSuite.run(TestSuite.java:236)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:64)
Is there a missing jar to get
ro/sync/security/AbstractInteractiveChecker class ?
Thanks,
Johann
Re: Example of integration / unit tests framework actions
Posted: Tue Nov 23, 2021 4:56 pm
by Radu
Hi Johann,
You need an extra classpath reference to "lib/oxygen-sandbox.jar" I presume.
Regards,
Radu
Re: Example of integration / unit tests framework actions
Posted: Tue Nov 23, 2021 5:03 pm
by Johann
No
Only
ro.sync.security.SecurityChecker is present in oxygen-sandbox.jar
Johann
Re: Example of integration / unit tests framework actions
Posted: Tue Nov 23, 2021 5:09 pm
by Radu
Hi Johann,
The "oxygen-sandbox.jar" from the Oxygen 21.1 installation "lib" folder has that class. Maybe you mixed Jars from different versions in the classpath.
Regards,
Radu
Re: Example of integration / unit tests framework actions
Posted: Tue Nov 23, 2021 5:13 pm
by Johann
My bad, sorry...
Too many oxygen versions in parallel
Johann
Re: Example of integration / unit tests framework actions
Posted: Wed Nov 24, 2021 8:23 am
by Radu
Hi Johann,
Sorry about that, when we have a fix for this in a future Oxygen release I'll update this forum thread.
Regards,
Radu
Re: Example of integration / unit tests framework actions
Posted: Wed Nov 24, 2021 11:28 am
by Johann
Hello Radu,
Thank you!
Can you confirm that at the moment, this is the (only ?) way you recommend to test framework actions ?
Johann
Re: Example of integration / unit tests framework actions
Posted: Wed Nov 24, 2021 2:00 pm
by Radu
Hi Johann,
This is the base JUnit class to start a Desktop Oxygen application and to invoke various actions from it.
As you are already using the Author component in your JUnit tests you could call our code which creates an AuthorComponentFactory and just work with it, I think you already have APIs to invoke actions defined at framework level.
Regards,
Radu
Re: Example of integration / unit tests framework actions
Posted: Mon Mar 14, 2022 10:01 am
by Radu
Hi,
We released Oxygen 24.1 and it should include again the missing PluginWorkspaceTCBase base class.
Regards,
Radu