Comments (3)
Should be fixed with 2.1.0.
The error message for your example is now clearer:
Could not find method imports() for arguments [org.unbrokendome.gradle.plugins.testsets.dsl.DefaultTestLibrary_Decorated@71edb2dd] on task ':integrationTest' of type org.gradle.api.tasks.testing.Test.
(At least now it's obvious that you're trying to configure the integrationTest
task and not the test set.)
I also introduced a new libraries
block which should make it easier to create libraries:
testSets {
libraries {
testCommon
}
unitTest {
imports testCommon
}
integrationTest {
imports testCommon
}
}
from gradle-testsets-plugin.
I worked out that I needed to add the plugin as a dependency into buildscript
. The IDE still has difficulty, but command line Gradle is better. Perhaps a documentation update for the TestLibrary
example?
However, using:
testSets {
testCommon(TestLibrary)
unitTest {
imports testCommon
}
integrationTest {
imports testCommon
shouldRunAfter test
}
}
I now see this from command line:
class org.unbrokendome.gradle.plugins.testsets.dsl.DefaultTestSet_Decorated cannot be cast to class org.unbrokendome.gradle.plugins.testsets.dsl.TestLibrary (org.unbrokendome.gradle.plugins.testsets.dsl.DefaultTestSet_Decorated and org.unbrokendome.gradle.plugins.testsets.dsl.TestLibrary are in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @81e7b6c)
Removing shouldRunAfter test
fixes this complaint while keeping the imports
, and removing the imports
lets Gradle process shouldRunAfter
.
from gradle-testsets-plugin.
Ok, this is some really strange behavior :-)
First, the Groovy DSL support in IntelliJ isn't very good in recognizing types from plugins - you can use the createLibrary
method to avoid the import statement:
testSets {
def testCommon = createLibrary('testCommon')
}
Second, there is no shouldRunAfter
method on a test set (although it might be a good feature to add). Apparently by using this method, Gradle figures out that you mean to configure the integrationTest
task instead of the integrationTest
testset - remember that tasks are available as top-level variables when using Groovy DSL.
This in turn causes the imports
method to be called on the container, where it exists as a Kotlin extension method so that Kotlin scripts can refer to libraries by name. However, Groovy doesn't understand extension methods, so this gets messed up (and there's also a bug in the method).
To fix the problem, please take the shouldRunAfter
call outside of testSets
so it properly refers to the integrationTest
task:
testSets {
// ...
integrationTest {
imports testCommon
}
}
integrationTest.shouldRunAfter test
from gradle-testsets-plugin.
Related Issues (20)
- Gradle 7 support HOT 1
- Testset specific JaCoCo exec files unused HOT 1
- How can I use 'integrationTestImplementation` when naming the source set 'integration-test' HOT 1
- TestSetBase uses deprecated API which gets removed in Gradle 7.0 HOT 2
- Jacoco integration test report xml not generating HOT 1
- Resources in the wrong priority HOT 1
- How to pass jvm arguments when running integrationTest
- Jacoco integration test report html not generating
- Gradle build succeeds despite broken test set
- Question: Can you have separate and merged jacoco reports HOT 1
- Gradle is not resolving DependencyHandler methods for test sets HOT 2
- Unable to run single integration test HOT 1
- compileIntegrationTestJava can not find class in src/test/java HOT 1
- Can it run tests in Kotlin?
- Plugin application fails on Gradle 8.0 HOT 10
- Lombok does not work in a non-standard test set
- is possible to have `test` run in parallel but `integrationTest` to be sync?`
- Broken in gradle 8.2.1 HOT 1
- 4.1.0 broke IntelliJ IDEA support HOT 3
- 4.1.0 released with Java11 byte code
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gradle-testsets-plugin.