Giter Club home page Giter Club logo

Comments (3)

tkrullmann avatar tkrullmann commented on August 11, 2024 1

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.

binkley avatar binkley commented on August 11, 2024

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.

tkrullmann avatar tkrullmann commented on August 11, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.