Where is grails.test.spock.IntegrationSpec in Grails 3

391 views
Skip to first unread message

Eric Wu

unread,
Apr 14, 2015, 1:18:33 AM4/14/15
to grails-de...@googlegroups.com

In middle of upgrading to Grails 3.0.1. All good except for integration testing which worked well in 2.4.4.

I've noticed grails.test.spock.IntegrationSpec is not there in org.grails:grails-test:3.0.1 any more.

Copied IntegrationSpec from org.grails:grails-test:2.4.4 it complains:

java.lang.IllegalStateException: Could not find ApplicationContext, configure Grails correctly first
	at grails.util.Holders.getApplicationContext(Holders.java:97)
	at xxx.IntegrationSpec.$spock_initializeSharedFields(IntegrationSpec.groovy:15)


How should I get it work?

Eric Wu

unread,
Apr 14, 2015, 2:08:40 AM4/14/15
to grails-de...@googlegroups.com
If not wrong I think @Integration is supposed to be used for integration tests extending Specification. However first GGTS doesn't like it:

General error during canonicalization: Provider "data" not installed java.nio.file.FileSystemNotFoundException: Provider "data" not installed at java.nio.file.Paths.get(Paths.java:147) at 

 org.grails.io.support.MainClassFinder.searchMainClass(MainClassFinder.groovy:37) at 

 org.grails.compiler.injection.test.IntegrationTestMixinTransformation.visit(IntegrationTestMixinTransformation.groovy:82) at 

 org.codehaus.groovy.transform.ASTTransformationVisitor.visitClass(ASTTransformationVisitor.java:150) at org.codehaus.groovy.transform.ASTTransformationVisitor

 $2.call(ASTTransformationVisitor.java:227) at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1221) at 

 org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:651) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:

 629) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:606) at 

 org.codehaus.jdt.groovy.internal.compiler.ast.GroovyCompilationUnitDeclaration.processToPhase(GroovyCompilationUnitDeclaration.java:202) at 

 org.codehaus.jdt.groovy.internal.compiler.ast.GroovyCompilationUnitDeclaration.analyseCode(GroovyCompilationUnitDeclaration.java:2285) at 

 org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:992) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:1034) at 

 org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process_aroundBody0(CompilationUnitProblemFinder.java:215) at 

 org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process_aroundBody1$advice(CompilationUnitProblemFinder.java:244) at 

 org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:1) at 

 org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:281) at 

 org.codehaus.jdt.groovy.model.GroovyReconcileWorkingCopyOperation.makeConsistent(GroovyReconcileWorkingCopyOperation.java:80) at 

 org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:90) at 

 org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:729) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:789) at 

 org.codehaus.jdt.groovy.model.GroovyCompilationUnit.reconcile(GroovyCompilationUnit.java:440) at 

 org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:126) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.access

 $0(JavaReconcilingStrategy.java:108) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy$1.run(JavaReconcilingStrategy.java:89) at 

 org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:87) at 

 org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:151) at 

 org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.reconcile(CompositeReconcilingStrategy.java:86) at 

 org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile(JavaCompositeReconcilingStrategy.java:104) at 

 org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:77) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:

 206)


If I run as JUnit test:

org.spockframework.runtime.InvalidSpecException: Specification 'xxx.job.JobRunnerIntegrationSpec' was not compiled properly (Spock AST transform was not run); try to do a clean build

at org.spockframework.runtime.SpecUtil.checkIsSpec(SpecUtil.java:53)

at org.spockframework.runtime.SpecInfoBuilder.buildSpec(SpecInfoBuilder.java:86)

at org.spockframework.runtime.SpecInfoBuilder.doBuild(SpecInfoBuilder.java:68)

at org.spockframework.runtime.SpecInfoBuilder.build(SpecInfoBuilder.java:54)

at org.spockframework.runtime.Sputnik.getSpec(Sputnik.java:80)

at org.spockframework.runtime.Sputnik.runExtensionsIfNecessary(Sputnik.java:88)

at org.spockframework.runtime.Sputnik.getDescription(Sputnik.java:55)

at org.junit.runner.Runner.testCount(Runner.java:41)

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.countTestCases(JUnit4TestClassReference.java:30)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.countTests(RemoteTestRunner.java:479)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:447)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)


My GGTS's Groovy compiler version is 2.4.1.


Jeff Scott Brown

unread,
Apr 14, 2015, 2:11:31 AM4/14/15
to grails-de...@googlegroups.com
See http://grails.github.io/grails-doc/3.0.1/guide/testing.html#integrationTesting.

There are a number of sample tests at https://github.com/grails/grails3-functional-tests. I hope that helps.



JSB
--
Jeff Scott Brown
je...@jeffandbetsy.net

Autism Strikes 1 in 166
Find The Cause ~ Find The Cure
http://www.autismspeaks.org/

Eric Wu

unread,
Apr 15, 2015, 1:27:39 AM4/15/15
to grails-de...@googlegroups.com
Thanks Jeff. 

I was able to use @Integration now and I had to specify @Integration(applicationClass = Application.class) to avoid compilation error thrown by my IDE. It somehow couldn't find Application class by itself. 

Now I'm facing another problem. I can't start up the application by running Application.main. It doesn't seem to instantiate the Spring beans so Bootstrap fails. 


import grails.util.Environment

class BootStrap {

    def dynamoDBMapper

    def init = { servletContext ->
        dynamoDBMapper.getS3ClientCache().useClient(s3Client)
    }

}

It worked well in 2.4.x. so dynamoDBMapper can be autowired. Now I'm getting a null dynamoDBMapper. Not familiar with Spring Boot. Can you shed some lights please?

Regards
Eric


--
You received this message because you are subscribed to a topic in the Google Groups "Grails Dev Discuss" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/grails-dev-discuss/u0QhJMbLcCQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to grails-dev-disc...@googlegroups.com.
To post to this group, send email to grails-de...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/grails-dev-discuss/32354C0E-231D-4FEB-83A3-FA06D6C36D70%40jeffandbetsy.net.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages