Build timeout on Travis CI when testing with lettuce + splinter and selenium - django

I have about 130 lettuce tests which runs fine locally, but when travis runs them it hangs after a few tests.
Here the tests fails at the 8th scenario: https://travis-ci.org/h3/django-editlive/jobs/3945466
And when I remove the last scenario it passes: https://travis-ci.org/h3/django-editlive/builds/3945648
I tried splitting my tests in separate features files, same problem.
It's doesn't seem to be caused by a specific scenario, but rather by the number of scenario ran.
According to Travis' docs:
Waiting for keyboard input or other kind of human interaction
Concurrency issues (deadlocks, livelocks and so on)
Installation of native extensions that take very long time to compile
The only possibility I could see is a concurrency issue .. but how can I debug it ?
My project is open source so the entire source code is available here:
https://github.com/h3/django-editlive
lettuce-features

I have no definitive answer about the problem, but I managed to work around it.
Since I had no output whatsoever I tried to strace my tests so I could see exactly where it hangs.
But the strace output was to big hand was trimmed by travis .. So I had to grep -v some lines.
Here's what it looks like in my .travis.yml file:
script:
- "strace -q python project/manage.py harvest 2>&1 | grep -v ENOENT"
ENOENT Stands for "No such file or directory", I didn't really need it to make sense of strace output and it cutted enough line to let me see where it hanged.
Turns out it was hanging on a request to selenium:
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(35146), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
send(4, "POST /hub/session/e7cba641-2842-"..., 359, 0) = 359
I couldn't really replace selenium, so I took a wild guess and replaced firefox with google chrome to run my test .. et voila. Tests ran perfectly.
It sucks that I haven't really solved the problem, but debugging remotely on travis ci is a PITA at best. And with a waiting time of 35min between each iterations I have more important things to do.

Related

Rust tests fail to even run

I'm writing a project to learn how to use Rust and I'm calling my project future-finance-labs. After writing some basic functions and verifying the app can be built I wanted to include some tests, located in aggregates/mod.rs. [The tests are in the same file as the actual code as per the documentation.] I'm unable to get the tests to run despite following the documentation to the best of my ability. I have tried to build the project using PowerShell as well as Bash. [It fails to run on Fedora Linux as well]
Here is my output on Bash:
~/future-finance-labs$ cargo test -- src/formatters/mod.rs
Finished test [unoptimized + debuginfo] target(s) in 5.98s
Running target/debug/deps/future_finance_labs-16ed066e1ea3b9a1
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Using PowerShell I get the same output with some errors like the following:
error: failed to remove C:\Users\jhale\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\jhale\future-finance-labs\target\debug\build\mime_guess-890328c8763afc22\build_script_build-890328c8763afc22.build_script_build.c22di3i8-cgu.0.rcgu.o: The system cannot find the path specified. (os error 3)
After my initial excitement at the prospect of writing a few tests that passed on the first attempt, I quickly realized all the green was indicative; rather, of a failure to even run the tests. I just want to run the unit tests. Running cargo test alone without a separate and file fails as well. Why can't I run any test in this project with my current setup?
It can't find your test because the rust compiler doesn't know about it. You need to add mod aggregates to main.
mod aggregates;
fn main() {
println!("Hello, world!");
}
After you do that, you'll see that your aggregates/mod.rs doesn't compile for many reasons.
And as Mihir was trying to say, you need to use the name of the test, not the name of the file to run a specific test:
cargo test min_works
cargo test aggregates
See also:
How do I “use” or import a local Rust file?
Rust Book: Controlling How Tests Are Run

Enabling code coverage for Dart 2 when running unit tests

I'm confused as to how to enable code coverage for unit tests while writing a Dart application. I have a number of non-web based tests -- they test methods of my domain model used by my web app. These methods don't need to run in the browser for unit testing.
Right now, I run them in the Idea Intellij Community Edition IDE by creating a run configuration for "Run all tests in /test directory".
I can also run them via the terminal like this: "pub run test".
I've read the following guides:
https://dart-lang.github.io/observatory/code-coverage.html
However I cannot seem to get anything to work. Following the guides above, I assume I have to do this from the terminal:
$ collect_coverage --uri=http://... -o coverage.json --resume-isolates
But I see nowhere I can get the URI mentioned. The documentation says "where --uri specifies the Observatory URI emitted by the VM."
Okaaaay... Where do I see the URI emitted by the VM?
Reading other sections of the guide, I see that I can start standalone Dart apps in the Observatory like so:
$ dart --observe <script>.dart
I have tried selecting one of the unit test files and invoking it using that command, like this:
$ dart --observe test/die_roll_test.dart
Observatory listening on http://127.0.0.1:8181/
00:00 +0: can be constructed from a String
00:00 +1: should create normalized DieRoll
00:00 +2: can denormalize
00:00 +3: can add
00:00 +4: can subtract
00:00 +5: can multiply
00:00 +6: can divide
00:00 +7: All tests passed!
vm-service: isolate(297422250) 'die_roll_test.dart:main()' has no debugger attached and is paused at exit. Connect to Observatory at http://127.0.0.1:8181/ to debug.
Visiting URL http://127.0.0.1:8181 in my browser yields an empty page with the title 'Dart VM Observatory'.
In any case, I can try issuing the code coverage command using that URL:
$ collect_coverage --uri=http://127.0.0.1:8181 coverage.json --resume-isolates
This spits out a huge glob of text, but I don't see a coverage.json file created anywhere.
Ideally, this could be integrated with the IDE so I can choose coverage as an option when running the unit tests. But even if I have to live with command line utilities, how do I get it work?
If it helps, I'm running on Mac OS X 10.13 High Sierra, with Dart 2.0.0 and test 1.3.0.
Follow this issue: https://github.com/dart-lang/test/issues/36
We hope to make this easier. It is possible today, but it's not nicely aligned with our test package.
You could also try this package:
https://pub.dartlang.org/packages/test_coverage
I have no experience, but it might be worth a shot!

When to run unit-tests?

We are currently setting up our build-process within an automated continious integration environment and facing the fundamental question, when to run unit-tests?
One way would be to run the unit test with every build task. So as soon as one unit-test fails, the whole build fails. This has the advantage, that the developer is always forced to keep the unit-tests green, as s/he is otherwise not able to run the application. On the other hand, you are always distracted by fixing the tests during a development process - which might force you to work in very small iterations. Besides that the time to run your application always increases, as you have to wait for the tests every time.
The other way would be, to let the CI-Server run the tests after each new commit and let the developer simply know, that something went wrong. In this way the developer is pretty free, at what time to care for the unit-tests, but also other developers on the same branch might suffer, because they cannot be sure, that all parts of the software work as expected and have to check theirselves, if the failing tests might also influence their work.
So do you have any best-practices or recommendations, which would be a good time to run the tests?
BTW: of course we also run bigger integration-tests, which are handled in a seperate CI-process.
Short answer: run all unit tests on the build server for every commit, on every branch. Assuming your unit tests don't take a really long time to run, there really is no downside to this. As for running all unit tests on every build task locally, that would be a overkill. Developers should have the discipline to decide when to run the tests and when not to.
You want to know as soon as possible when something is wrong so you can fix it promptly. You also want to know all of the tests that fail rather than just the first test that fails. When there are multiple issues it would be a pretty annoying workflow to only fix the one issue and then have to commit, push, and wait for the build to run again to see if there are more issues.
Your build process should have two targets: build and test. test should be the default target when not specifying anything else. The test can't run until the project was build, so the build target is a dependancy of test. So (suppose use use make): make or make test will build and test. make build will just build the project.
Now, if you're using some IDE, you could consider doing the test in some separate way "outside" of the IDE. So, maybe add a third target ide and let the ide build that one. It could then have the build target as normal dependency and as last step spawn a new job in background to do the testing in it's own terminal window, something like (under linux): ( xterm -e ./run-tests & ).
And if you're developing outside of an ide (like I do), then just have a separate terminal run the build & test. As soon as testing starts, you know the build process finished, so you can run you application already, even thou the tests are still running.
Just to demonstrate this (and as a proof of concept for having the test run in background) I just created some trivial test case:
bodo.c:
#include <stdio.h>
int main(int argc, char * argv[]) {
printf("Hallo %s", argc > 1 ? argv[1] : "Welt");
return 0;
}
Makefile:
test: build run-tests
ide: build run-tests-background
run-tests-background:
( xterm -e ./run-tests --wait & )
run-tests:
./run-tests
build: bodo
bodo: bodo.o
bodo.o: bodo.c
.PHONY: run-tests run-tests-background
run-tests:
#! /bin/sh
retval=true
if test "$(./bodo)" != "Hallo Welt"
then
echo "Test failed []"
retval=false
fi
if test "$(./bodo Bodo)" != "Hallo Bodo"
then
echo "Test failed [Bodo]"
retval=false
fi
if test "$(./bodo Fail)" != "Hallo Bodo"
then
echo "Test failed [Fail]"
retval=false
fi
sleep 5 # Simulate some more tests
if $retval
then
echo "All tests suceeded ;)"
else
echo "Some tests failed :("
fi
if test "$1" == "--wait"
then
read -p "Press ENTER to close" enter
fi
if $retval
then
exit 0
else
exit 2
fi
Usage:
Build the project but do not run the tests
make build
Build the project and do run the test in current terminal
make
Build the project and do run the test in separate terminal. Make will return once the build process completed and the test got started
make ide
And two helpers, which are not supposed to be run by hand:
Only run the tests in current terminal (this will fail, if the project wasn't built yet)
make run-tests
Only run the tests in separate terminal (this will fail, if the project wasn't built yet). Make will return immediatelly
make run-tests-background

Not getting any test results with xunitmultiprocess

I am running tests through Jenkins on a windows box. In my "Execute Windows Batch command" portion of the project configuration I have the following command:
nosetests --nocapture --with-xunitmp --eval-attr "%APPLICATION% and priority<=%PRIORITY% and smoketest and not dev" --processes=4 --process-timeout=2000
The post build actions have "Publish JUnit test result report" with the Test report XMLs path being:
trunk\automation\selenium\src\nosetests.xml
When I do a test run, the nosetests.xml file is created, however it is empty, and I am not getting any Test Results for the build.
I am not really sure what is wrong here.
EDIT 1
I ran the tests with just --with-xunit and REM'd out the --processes and got test results. Does anyone of problems with xunitmp not working with a Windows environment?
EDIT 2
I unstalled an reinstalled nose and nose_xunitmp to no avail.
The nosetest plugin for parallelizing tests and plugin for producing xml output are incompatible. Enabling them at the same time will produce the exact result you got.
If you want to keep using nosetest, you need to execute tests sequentially or find other means of parallelizing them (e.g. by executing multiple parallel nosetest commands (which is what I do at work.))
Alternatively you can use another test runner like nose2 or py.test which do not have this limitation.
Apparently the problem is indeed Windows and how it handles threads. We attempted several tests outside of our Windows Jenkins server and they do not work either. Stupid Windows.

Cannot run Grails Spec using JUnit on IntelliJ IDEA since version 2.3.2

I'm in the process of upgrading our application from Grails 2.2.4 to 2.3.4 and everything seems to go quite easy. The only thing that is driving me nuts is that I can't run a Tests or a Spec class (or a collection of them) using the JUnit runner within IDEA (both version 12 and 13).
I get this exception:
Class not found: "test.PersonControllerSpec"
Process finished with exit code 1
I can "make" the project successfully and I can run the tests using the Grails runner too.
Seems like IDEA doesn't compile the test code or something like that.
Funnily it works like a charm in STS so it can't come from Grails.
Here is the full target ... might help:
Z:\dev\frameworks\jdk1.7.0_45\bin\java -ea -Didea.launcher.port=7532 "-Didea.launcher.bin.path=Z:\dev\tools\IntelliJ IDEA 13.0\bin" -Dfile.encoding=UTF-8 -classpath "Z:\dev\tools\IntelliJ IDEA 13.0\lib\idea_rt.jar;Z:\dev\tools\IntelliJ IDEA 13.0\plugins\junit\lib\junit-rt.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\charsets.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\deploy.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\javaws.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\jce.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\jfr.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\jfxrt.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\jsse.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\management-agent.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\plugin.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\resources.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\rt.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\ext\access-bridge-64.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\ext\dnsns.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\ext\jaccess.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\ext\localedata.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\ext\sunec.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\ext\sunjce_provider.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\ext\sunmscapi.jar;Z:\dev\frameworks\jdk1.7.0_45\jre\lib\ext\zipfs.jar;Z:\dev\code\Test\out\test\Test;Z:\dev\code\Test\out\production\Test;C:\Users\Nico.m2\repository\org\liquibase\liquibase-core\2.0.5\liquibase-core-2.0.5.jar;C:\Users\Nico.m2\repository\org\eclipse\jdt\core\compiler\ecj\3.7.2\ecj-3.7.2.jar;C:\Users\Nico.m2\repository\bouncycastle\bcprov-jdk14\138\bcprov-jdk14-138.jar;C:\Users\Nico.m2\repository\org\javassist\javassist\3.16.1-GA\javassist-3.16.1-GA.jar;C:\Users\Nico.m2\repository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;C:\Users\Nico.m2\repository\org\grails\grails-datastore-web\1.1.9.RELEASE\grails-datastore-web-1.1.9.RELEASE.jar;C:\Users\Nico.m2\repository\org\springframework\data\spring-data-mongodb\1.2.1.RELEASE\spring-data-mongodb-1.2.1.RELEASE.jar;C:\Users\Nico.m2\repository\org\mongodb\mongo-java-driver\2.11.1\mongo-java-driver-2.11.1.jar;C:\Users\Nico.m2\repository\javax\activation\activation\1.1\activation-1.1.jar;C:\Users\Nico.m2\repository\javax\mail\mail\1.4.3\mail-1.4.3.jar;C:\Users\Nico.m2\repository\org\mozilla\rhino\1.7R4\rhino-1.7R4.jar;C:\Users\Nico.m2\repository\xml-apis\xml-apis\1.4.01\xml-apis-1.4.01.jar;C:\Users\Nico.m2\repository\com\google\guava\guava\14.0\guava-14.0.jar;C:\Users\Nico.m2\repository\org\json\json\20080701\json-20080701.jar;C:\Users\Nico.m2\repository\org\grails\grails-datastore-mongo\1.3.0.RELEASE\grails-datastore-mongo-1.3.0.RELEASE.jar;C:\Users\Nico.m2\repository\org\grails\grails-datastore-gorm-plugin-support\1.1.9.RELEASE\grails-datastore-gorm-plugin-support-1.1.9.RELEASE.jar;C:\Users\Nico.m2\repository\org\springframework\data\spring-data-commons-core\1.4.1.RELEASE\spring-data-commons-core-1.4.1.RELEASE.jar;C:\Users\Nico.m2\repository\org\springframework\data\spring-data-commons\1.5.1.RELEASE\spring-data-commons-1.5.1.RELEASE.jar;C:\Users\Nico.m2\repository\org\grails\grails-datastore-gorm-mongo\1.3.0.RELEASE\grails-datastore-gorm-mongo-1.3.0.RELEASE.jar;C:\Users\Nico.m2\repository\com\gmongo\gmongo\1.2\gmongo-1.2.jar;C:\Users\Nico.m2\repository\org\apache\httpcomponents\httpcore\4.2.1\httpcore-4.2.1.jar;C:\Users\Nico.m2\repository\org\apache\httpcomponents\httpclient\4.2.1\httpclient-4.2.1.jar;C:\Users\Nico.m2\repository\org\seleniumhq\selenium\selenium-api\2.35.0\selenium-api-2.35.0.jar;C:\Users\Nico.m2\repository\cglib\cglib-nodep\2.1_3\cglib-nodep-2.1_3.jar;C:\Users\Nico.m2\repository\org\seleniumhq\selenium\selenium-remote-driver\2.35.0\selenium-remote-driver-2.35.0.jar;C:\Users\Nico.m2\repository\asm\asm-tree\3.0\asm-tree-3.0.jar;C:\Users\Nico.m2\repository\net\sourceforge\cobertura\cobertura\1.9.4.1\cobertura-1.9.4.1.jar;C:\Users\Nico.m2\repository\org\gmetrics\GMetrics\0.5\GMetrics-0.5.jar;C:\Users\Nico.m2\repository\org\codenarc\CodeNarc\0.19\CodeNarc-0.19.jar;C:\Users\Nico.m2\repository\org\seleniumhq\selenium\selenium-support\2.35.0\selenium-support-2.35.0.jar;C:\Users\Nico.m2\repository\io\netty\netty\3.5.2.Final\netty-3.5.2.Final.jar;C:\Users\Nico.m2\repository\org\webbitserver\webbit\0.4.14\webbit-0.4.14.jar;C:\Users\Nico.m2\repository\org\seleniumhq\selenium\selenium-safari-driver\2.35.0\selenium-safari-driver-2.35.0.jar;C:\Users\Nico.m2\repository\org\seleniumhq\selenium\selenium-android-driver\2.35.0\selenium-android-driver-2.35.0.jar;C:\Users\Nico.m2\repository\org\seleniumhq\selenium\selenium-iphone-driver\2.35.0\selenium-iphone-driver-2.35.0.jar;C:\Users\Nico.m2\repository\org\seleniumhq\selenium\selenium-ie-driver\2.35.0\selenium-ie-driver-2.35.0.jar;C:\Users\Nico.m2\repository\org\seleniumhq\selenium\selenium-chrome-driver\2.35.0\selenium-chrome-driver-2.35.0.jar;C:\Users\Nico.m2\repository\org\seleniumhq\selenium\selenium-firefox-driver\2.35.0\selenium-firefox-driver-2.35.0.jar;C:\Users\Nico.m2\repository\org\eclipse\jetty\jetty-http\8.1.9.v20130131\jetty-http-8.1.9.v20130131.jar;C:\Users\Nico.m2\repository\org\eclipse\jetty\jetty-io\8.1.9.v20130131\jetty-io-8.1.9.v20130131.jar;C:\Users\Nico.m2\repository\org\eclipse\jetty\jetty-util\8.1.9.v20130131\jetty-util-8.1.9.v20130131.jar;C:\Users\Nico.m2\repository\org\eclipse\jetty\jetty-websocket\8.1.9.v20130131\jetty-websocket-8.1.9.v20130131.jar;C:\Users\Nico.m2\repository\org\w3c\css\sac\1.3\sac-1.3.jar;C:\Users\Nico.m2\repository\net\sourceforge\cssparser\cssparser\0.9.9\cssparser-0.9.9.jar;C:\Users\Nico.m2\repository\net\sourceforge\nekohtml\nekohtml\1.9.18\nekohtml-1.9.18.jar;C:\Users\Nico.m2\repository\xerces\xercesImpl\2.10.0\xercesImpl-2.10.0.jar;C:\Users\Nico.m2\repository\net\sourceforge\htmlunit\htmlunit-core-js\2.12\htmlunit-core-js-2.12.jar;C:\Users\Nico.m2\repository\org\apache\httpcomponents\httpmime\4.2.3\httpmime-4.2.3.jar;C:\Users\Nico.m2\repository\org\apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar;C:\Users\Nico.m2\repository\xalan\xalan\2.7.1\xalan-2.7.1.jar;C:\Users\Nico.m2\repository\net\sourceforge\htmlunit\htmlunit\2.12\htmlunit-2.12.jar;C:\Users\Nico.m2\repository\org\seleniumhq\selenium\selenium-htmlunit-driver\2.35.0\selenium-htmlunit-driver-2.35.0.jar;C:\Users\Nico.m2\repository\net\java\dev\jna\platform\3.4.0\platform-3.4.0.jar;C:\Users\Nico.m2\repository\net\java\dev\jna\jna\3.4.0\jna-3.4.0.jar;C:\Users\Nico.m2\repository\org\apache\commons\commons-exec\1.1\commons-exec-1.1.jar;C:\Users\Nico.m2\repository\net\sf\ehcache\ehcache-core\2.4.6\ehcache-core-2.4.6.jar;C:\Users\Nico.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\7.0.42\tomcat-embed-core-7.0.42.jar;C:\Users\Nico.m2\repository\org\apache\tomcat\embed\tomcat-embed-jasper\7.0.42\tomcat-embed-jasper-7.0.42.jar;C:\Users\Nico.m2\repository\org\apache\tomcat\tomcat-catalina-ant\7.0.42\tomcat-catalina-ant-7.0.42.jar;C:\Users\Nico.m2\repository\joda-time\joda-time\2.3\joda-time-2.3.jar;C:\Users\Nico.m2\repository\org\apache\tomcat\embed\tomcat-embed-logging-log4j\7.0.42\tomcat-embed-logging-log4j-7.0.42.jar;C:\Users\Nico.m2\repository\org\spockframework\spock-grails-support\0.7-groovy-2.0\spock-grails-support-0.7-groovy-2.0.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-aether-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-async-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-bootstrap-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-core-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-databinding-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-docs-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-logging-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-async-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-codecs-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-controllers-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-converters-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-databinding-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-datasource-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-domain-class-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-filters-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-gsp-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-i18n-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-log4j-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-mimetypes-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-rest-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-services-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-servlets-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-testing-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-url-mappings-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-plugin-validation-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-resources-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-scripts-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-spring-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-test-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-web-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-wrapper-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\dist\grails-wrapper-support-2.3.4.jar;Z:\dev\frameworks\grails-2.3.4\lib\aopalliance\aopalliance\jars\aopalliance-1.0.jar;Z:\dev\frameworks\grails-2.3.4\lib\asm\asm\jars\asm-3.3.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\bouncycastle\bcmail-jdk14\jars\bcmail-jdk14-138.jar;Z:\dev\frameworks\grails-2.3.4\lib\bouncycastle\bcprov-jdk14\jars\bcprov-jdk14-138.jar;Z:\dev\frameworks\grails-2.3.4\lib\cglib\cglib\jars\cglib-2.2.2.jar;Z:\dev\frameworks\grails-2.3.4\lib\com.google.code.findbugs\jsr305\jars\jsr305-1.3.9.jar;Z:\dev\frameworks\grails-2.3.4\lib\com.google.code.gson\gson\jars\gson-2.2.4.jar;Z:\dev\frameworks\grails-2.3.4\lib\com.google.guava\guava\jars\guava-10.0.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\com.google.protobuf\protobuf-java\jars\protobuf-java-2.5.0.jar;Z:\dev\frameworks\grails-2.3.4\lib\com.googlecode.concurrentlinkedhashmap\concurrentlinkedhashmap-lru\jars\concurrentlinkedhashmap-lru-1.3.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\com.googlecode.json-simple\json-simple\jars\json-simple-1.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\com.h2database\h2\jars\h2-1.3.173.jar;Z:\dev\frameworks\grails-2.3.4\lib\com.lowagie\itext\jars\itext-2.0.8.jar;Z:\dev\frameworks\grails-2.3.4\lib\commons-beanutils\commons-beanutils\jars\commons-beanutils-1.8.3.jar;Z:\dev\frameworks\grails-2.3.4\lib\commons-cli\commons-cli\jars\commons-cli-1.2.jar;Z:\dev\frameworks\grails-2.3.4\lib\commons-codec\commons-codec\jars\commons-codec-1.6.jar;Z:\dev\frameworks\grails-2.3.4\lib\commons-collections\commons-collections\jars\commons-collections-3.2.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\commons-el\commons-el\jars\commons-el-1.0.jar;Z:\dev\frameworks\grails-2.3.4\lib\commons-fileupload\commons-fileupload\jars\commons-fileupload-1.2.2.jar;Z:\dev\frameworks\grails-2.3.4\lib\commons-io\commons-io\jars\commons-io-2.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\commons-lang\commons-lang\jars\commons-lang-2.6.jar;Z:\dev\frameworks\grails-2.3.4\lib\commons-validator\commons-validator\jars\commons-validator-1.3.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\hsqldb\hsqldb\jars\hsqldb-1.8.0.10.jar;Z:\dev\frameworks\grails-2.3.4\lib\javax.annotation\jsr250-api\jars\jsr250-api-1.0.jar;Z:\dev\frameworks\grails-2.3.4\lib\javax.enterprise\cdi-api\jars\cdi-api-1.0.jar;Z:\dev\frameworks\grails-2.3.4\lib\javax.inject\javax.inject\jars\javax.inject-1.jar;Z:\dev\frameworks\grails-2.3.4\lib\javax.servlet\javax.servlet-api\jars\javax.servlet-api-3.0.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\javax.servlet\jsp-api\jars\jsp-api-2.0.jar;Z:\dev\frameworks\grails-2.3.4\lib\javax.servlet\jstl\jars\jstl-1.1.2.jar;Z:\dev\frameworks\grails-2.3.4\lib\javax.servlet.jsp\jsp-api\jars\jsp-api-2.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\javax.transaction\jta\jars\jta-1.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\jline\jline\jars\jline-2.11.jar;Z:\dev\frameworks\grails-2.3.4\lib\junit\junit\jars\junit-4.11.jar;Z:\dev\frameworks\grails-2.3.4\lib\log4j\log4j\jars\log4j-1.2.17.jar;Z:\dev\frameworks\grails-2.3.4\lib\net.java.dev.jna\jna\jars\jna-4.0.0.jar;Z:\dev\frameworks\grails-2.3.4\lib\opensymphony\sitemesh\jars\sitemesh-2.4.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.ant\ant\jars\ant-1.8.4.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.ant\ant-junit\jars\ant-junit-1.8.4.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.ant\ant-launcher\jars\ant-launcher-1.8.4.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.ant\ant-trax\jars\ant-trax-1.7.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.httpcomponents\httpclient\jars\httpclient-4.2.5.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.httpcomponents\httpcore\jars\httpcore-4.2.4.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.ivy\ivy\jars\ivy-2.3.0.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.maven\maven-aether-provider\jars\maven-aether-provider-3.1.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.maven\maven-model\jars\maven-model-3.1.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.maven\maven-model-builder\jars\maven-model-builder-3.1.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.maven\maven-repository-metadata\jars\maven-repository-metadata-3.1.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.maven\maven-settings\jars\maven-settings-3.1.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.maven\maven-settings-builder\jars\maven-settings-builder-3.1.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.tomcat\tomcat-jdbc\jars\tomcat-jdbc-7.0.47.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.apache.tomcat.embed\tomcat-embed-logging-log4j\jars\tomcat-embed-logging-log4j-7.0.47.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.aspectj\aspectjrt\jars\aspectjrt-1.7.2.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.aspectj\aspectjweaver\jars\aspectjweaver-1.7.2.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.bouncycastle\bcpg-jdk15\jars\bcpg-jdk15-1.45.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.bouncycastle\bcprov-jdk15\jars\bcprov-jdk15-1.45.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.codehaus.gant\gant_groovy1.8\jars\gant_groovy1.8-1.9.6.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.codehaus.gpars\gpars\jars\gpars-1.1.0.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.codehaus.groovy\groovy-all\jars\groovy-all-2.1.9.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.codehaus.jsr166-mirror\jsr166y\jars\jsr166y-1.7.0.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.codehaus.plexus\plexus-classworlds\jars\plexus-classworlds-2.4.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.codehaus.plexus\plexus-component-annotations\jars\plexus-component-annotations-1.5.5.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.codehaus.plexus\plexus-interpolation\jars\plexus-interpolation-1.19.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.codehaus.plexus\plexus-utils\jars\plexus-utils-3.0.15.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.eclipse.aether\aether-api\jars\aether-api-0.9.0.M3.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.eclipse.aether\aether-connector-basic\jars\aether-connector-basic-0.9.0.M3.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.eclipse.aether\aether-connector-file\jars\aether-connector-file-0.9.0.M2.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.eclipse.aether\aether-impl\jars\aether-impl-0.9.0.M3.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.eclipse.aether\aether-spi\jars\aether-spi-0.9.0.M3.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.eclipse.aether\aether-transport-file\jars\aether-transport-file-0.9.0.M3.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.eclipse.aether\aether-transport-http\jars\aether-transport-http-0.9.0.M3.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.eclipse.aether\aether-util\jars\aether-util-0.9.0.M3.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.eclipse.sisu\org.eclipse.sisu.inject\jars\org.eclipse.sisu.inject-0.0.0.M5.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.eclipse.sisu\org.eclipse.sisu.plexus\jars\org.eclipse.sisu.plexus-0.0.0.M5.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.fusesource.jansi\jansi\jars\jansi-1.11.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.grails\grails-datastore-core\jars\grails-datastore-core-2.0.6.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.grails\grails-datastore-gorm\jars\grails-datastore-gorm-2.0.6.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.grails\grails-datastore-simple\jars\grails-datastore-simple-2.0.6.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.grails\grails-gdoc-engine\jars\grails-gdoc-engine-1.0.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.hamcrest\hamcrest-core\jars\hamcrest-core-1.3.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.hibernate.javax.persistence\hibernate-jpa-2.0-api\jars\hibernate-jpa-2.0-api-1.0.1.Final.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.javassist\javassist\jars\javassist-3.17.1-GA.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.multiverse\multiverse-core\jars\multiverse-core-0.7.0.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.objenesis\objenesis\jars\objenesis-1.4.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.slf4j\jcl-over-slf4j\jars\jcl-over-slf4j-1.7.5.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.slf4j\jul-to-slf4j\jars\jul-to-slf4j-1.7.5.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.slf4j\slf4j-api\jars\slf4j-api-1.7.5.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.slf4j\slf4j-simple\jars\slf4j-simple-1.7.5.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.sonatype.plexus\plexus-cipher\jars\plexus-cipher-1.4.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.sonatype.plexus\plexus-sec-dispatcher\jars\plexus-sec-dispatcher-1.3.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.sonatype.sisu\sisu-guice\jars\sisu-guice-3.1.0-no_aop.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.spockframework\spock-core\jars\spock-core-0.7-groovy-2.0.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework\spring-aop\jars\spring-aop-3.2.5.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework\spring-aspects\jars\spring-aspects-3.2.5.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework\spring-beans\jars\spring-beans-3.2.5.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework\spring-context\jars\spring-context-3.2.5.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework\spring-context-support\jars\spring-context-support-3.2.5.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework\spring-core\jars\spring-core-3.2.5.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework\spring-expression\jars\spring-expression-3.2.5.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework\spring-jdbc\jars\spring-jdbc-3.2.5.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework\spring-jms\jars\spring-jms-3.2.5.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework\spring-test\jars\spring-test-3.2.5.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework\spring-tx\jars\spring-tx-3.2.5.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework\spring-web\jars\spring-web-3.2.5.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework\spring-webmvc\jars\spring-webmvc-3.2.5.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springframework.uaa\org.springframework.uaa.client\jars\org.springframework.uaa.client-1.0.1.RELEASE.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.springsource.springloaded\springloaded-core\jars\springloaded-core-1.1.4.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.xhtmlrenderer\core-renderer\jars\core-renderer-R8.jar;Z:\dev\frameworks\grails-2.3.4\lib\org.yaml\snakeyaml\jars\snakeyaml-1.8.jar;Z:\dev\frameworks\grails-2.3.4\lib\oro\oro\jars\oro-2.0.8.jar;Z:\dev\frameworks\grails-2.3.4\lib\taglibs\standard\jars\standard-1.1.2.jar;Z:\dev\frameworks\grails-2.3.4\lib\xalan\serializer\jars\serializer-2.7.1.jar;Z:\dev\frameworks\grails-2.3.4\lib\xpp3\xpp3_min\jars\xpp3_min-1.1.4c.jar" com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 test.PersonControllerSpec
I believe I have discovered the problem. Look at the folder designation type. My IntelliJ12 project file marked the "test root" as "test resources root" and I was not paying close enough attention. Remove the "Mark Directory As" and set as "Test Root". I am now able to run Groovy test cases