rahulserver
rahulserver

Reputation: 11205

Spock unit tests in grails for individual test does not work in intellij

I am trying to run individual spock unit tests using intellij idea.

Consider: // rest of code def "Test Something"() { // test code below }

In above test, when I goto the test body and right context menu, I get two kinds of tests for Test Something. One is the grails test and other is the junit test.

Referring to this question, the accepted answer recommends using the jUnit runner. But using it, the code simply does not compile(probably because certain plugins and other classes are not available).

(I am not sure though as this is the desired behavior because I am just running a single test and not all tests. So wonder why is it compiling all classes ,including plugin classes not required by the test target class.)

Using the grails runner, I check the configuration and here is the screenshot: enter image description here

So nothing looks wrong with the command there.

But the test on running gives Test framework quit unexpectedly error.

I try running same command from grails console(CMD windows) and it runs without any error message.

But on checking the output html files(in target/test-reports) I see that none of the tests actually ran!

So what is going on here and why are not individual tests running?

PS:

When I run All tests using test-app command, tests run as expected. Only individual (unit)tests are not running.

Upvotes: 3

Views: 1920

Answers (2)

BenHuman
BenHuman

Reputation: 175

Try using the grails unit test and add the following in the command line part:

-Dgrails.env=development

This will run the test as we change the running environment to development . Hope this will help to everyone facing such problems.

Upvotes: 0

billjamesdev
billjamesdev

Reputation: 14642

Part of the price paid for Spock's nice test naming, is that you can't specify an individual test to run anymore.

Here are some articles about it. The first seems pretty on-point: Run a specific test in a single test class with Spock and Maven

This one isn't about running a single test, but has some relevance and talks about Spock's test-name conversions, plus Peter Niederwieser chimes in with comments: Can TestNG see my Spock (JUnit) test results?

A workaround for this could be the @IgnoreRest annotation. Simply annotate the test you want to run with @IgnoreRest, and then specify that test class to run, and only the annotated test will run. http://spockframework.github.io/spock/javadoc/1.0/spock/lang/IgnoreRest.html

Upvotes: 2

Related Questions