isis-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gabriel Terwesten <gabr...@terwesten.net>
Subject Integration tests
Date Sun, 02 Sep 2018 16:02:55 GMT
I just started experimenting with Apache Isis and had some issues running integration tests.

1. Integration tests are not executed in module `module-simple`.

This is only true for projects generated from the 2.0.0-M1 archetype. The integration tests
in module `application` are executed.

To reproduce generate a project:

mvn archetype:generate  \
    -D archetypeGroupId=org.apache.isis.archetype \
    -D archetypeArtifactId=simpleapp-archetype \
    -D archetypeVersion=2.0.0-M1 \
    -D groupId=com.mycompany \
    -D artifactId=isis-2 \
    -D version=1.0-SNAPSHOT \
    -B

Then execute:

- mvn clean install
- mvn -pl module-simple verify

The test output for integration tests is empty.

2. Integration test logging includes a lot of log events twice.

During the bootstrapping of Isis for the integration test there seem to be two appenders.
The lines starting with the current time come from the appender configured in `logging-integtest.properties`.
I was not able to understand where the second appender is configured. This is not a big problem
just a bit distracting.

Here is an example:

[INFO] 
[INFO] --- maven-surefire-plugin:2.19.1:test (integ-bddspecs) @ isis-2-application ---

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running domainapp.application.bdd.specs.RunIntegBddSpecs
17:23:27,766  [HeadlessWithBootstrappingAbstract main       INFO ]  isis.integTest.module
= null
17:23:27,767  [HeadlessWithBootstrappingAbstract main       INFO ]  isis.headless.module =
null
17:23:27,840  [IsisConfigurationDefault main       INFO ]  adding isis.appManifest = org.apache.isis.applib.AppManifestAbstract2$Default
74    [IsisConfigurationDefault  main       INFO ]  adding isis.appManifest = org.apache.isis.applib.AppManifestAbstract2$Default
17:23:28,077  [Reflections          main       INFO ]  Reflections took 195 ms to scan 12
urls, producing 319 keys and 1050 values 
311   [Reflections               main       INFO ]  Reflections took 195 ms to scan 12 urls,
producing 319 keys and 1050 values 
17:23:28,204  [IsisConfigurationDefault main       INFO ]  adding isis.services.ServicesInstallerFromAnnotation.packagePrefix
= domainapp.modules.simple,domainapp.application
438   [IsisConfigurationDefault  main       INFO ]  adding isis.services.ServicesInstallerFromAnnotation.packagePrefix
= domainapp.modules.simple,domainapp.application
17:23:28,205  [IsisConfigurationDefault main       INFO ]  adding isis.persistor.datanucleus.RegisterEntities.packagePrefix
= domainapp.modules.simple,domainapp.application
439   [IsisConfigurationDefault  main       INFO ]  adding isis.persistor.datanucleus.RegisterEntities.packagePrefix
= domainapp.modules.simple,domainapp.application
17:23:28,207  [IsisConfigurationDefault main       INFO ]  adding isis.services = org.apache.isis.core.integtestsupport.components.HeadlessTransactionSupportDefault
441   [IsisConfigurationDefault  main       INFO ]  adding isis.services = org.apache.isis.core.integtestsupport.components.HeadlessTransactionSupportDefault
17:23:28,207  [IsisConfigurationDefault main       INFO ]  adding isis.deploymentType = server_prototype
441   [IsisConfigurationDefault  main       INFO ]  adding isis.deploymentType = server_prototype
17:23:28,207  [IsisConfigurationDefault main       INFO ]  adding isis.persistor.datanucleus.impl.datanucleus.cache.level2.type
= none
441   [IsisConfigurationDefault  main       INFO ]  adding isis.persistor.datanucleus.impl.datanucleus.cache.level2.type
= none
17:23:28,207  [IsisConfigurationDefault main       INFO ]  adding isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit
= false
441   [IsisConfigurationDefault  main       INFO ]  adding isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit
= false
17:23:28,208  [IsisConfigurationDefault main       INFO ]  adding isis.persistor.datanucleus.impl.datanucleus.cache.level2.mode
= ENABLE_SELECTIVE
442   [IsisConfigurationDefault  main       INFO ]  adding isis.persistor.datanucleus.impl.datanucleus.cache.level2.mode
= ENABLE_SELECTIVE
17:23:28,208  [IsisConfigurationDefault main       INFO ]  adding isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName
= org.hsqldb.jdbcDriver
442   [IsisConfigurationDefault  main       INFO ]  adding isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName
= org.hsqldb.jdbcDriver
17:23:28,208  [IsisConfigurationDefault main       INFO ]  adding isis.persistor.datanucleus.impl.datanucleus.schema.validateAll
= false
442   [IsisConfigurationDefault  main       INFO ]  adding isis.persistor.datanucleus.impl.datanucleus.schema.validateAll
= false
17:23:28,208  [IsisConfigurationDefault main       INFO ]  adding isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword
= ********
442   [IsisConfigurationDefault  main       INFO ]  adding isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword
= ********
17:23:28,209  [IsisConfigurationDefault main       INFO ]  adding isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL
= jdbc:hsqldb:mem:test-07b19913-71b6-4994-8d71-6a3aaaf79e00
443   [IsisConfigurationDefault  main       INFO ]  adding isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL
= jdbc:hsqldb:mem:test-07b19913-71b6-4994-8d71-6a3aaaf79e00

3. Unexpected error when accessing collection through wrapper.

Inside of integration tests i can’t seem to access collections through the getter if the
object is wrapped. From the documentation I got the impression that that should be possible.


This is the offending line:

assertThat(wrap(food).getCustomUnits()).hasSize(1);

This is the error I see:

java.lang.IllegalArgumentException: domainapp.modules.core.dom.impl.Food#customUnits: more
than one ImperativeFacet for method getCustomUnits , with inconsistent intents: [CollectionAccessorFacetViaAccessor[type=PropertyOrCollectionAccessorFacet,method=public
java.util.SortedSet domainapp.modules.core.dom.impl.Food.getCustomUnits()], CollectionClearFacetViaAccessor[type=CollectionClearFacet,method=public
java.util.SortedSet domainapp.modules.core.dom.impl.Food.getCustomUnits()], CollectionAddToFacetViaAccessor[type=CollectionAddToFacet,method=public
java.util.SortedSet domainapp.modules.core.dom.impl.Food.getCustomUnits()], CollectionRemoveFromFacetViaAccessor[type=CollectionRemoveFromFacet,method=public
java.util.SortedSet domainapp.modules.core.dom.impl.Food.getCustomUnits()]]

	at org.apache.isis.core.metamodel.facets.ImperativeFacet$Util.getIntent(ImperativeFacet.java:167)
	at org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler.invoke(DomainObjectInvocationHandler.java:199)
	at domainapp.modules.core.dom.impl.Food$bb$VbQPvDRl.getCustomUnits(Unknown Source)
	at domainapp.modules.core.integtests.tests.Food_IntegTest$AddUnit.shouldWork(Food_IntegTest.java:32)
	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 org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:513)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:170)
	at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:166)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:113)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:58)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:113)
	at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
	at java.util.Iterator.forEachRemaining(Iterator.java:116)
	at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
	at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:121)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
	at java.util.Iterator.forEachRemaining(Iterator.java:116)
	at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:121)
	at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:55)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
	at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:74)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

I can provide a demo repo if this needs some investigation but maybe I’m making some obvious
mistake here.

Thanks four your help.


Mime
View raw message