> I took the Spock integration test that I have and made it a JUnit-style integration test and it runs
> just fine in STS.
OK, that is interesting.
> So STS can handle Grails integration tests.
Well... I guess it depends. Like I said I don't truly understand what all the things 'test-app' sets up for you in your execution context as opposed to what part of it is setup explicitly by code in your test classes / superclasses etc.
But the fact is that when you use 'Run as Junit'. You are not getting any of the setup grails does implicitly because what you are using is just a 'naked' Junit test runner. Nothing in it is grails specific. Any 'infrastructure' that is still being setup must therefore somehow be present in your test classes themselves, maybe inherited from a super class, or via an AST transform or etc.
So I guess, you are right. Maybe whether a test is classed as integration or unit is less important than whether or not it actually depends on some implicit context that grails will setup only for integration tests. You may get lucky, if you don't use the things that aren't there in the 'naked' JUnit runner, it may work.
Still it would be interesting to better understand/determine precisely why your case (d) is not working. I'm willing to go 'down this rathole' with you. But I have to warn you ahead of time that I expect it to be a bit of work playing detective... and at the end there's no guarantee that I can fix it. (but without knowing what is the exact cause we are just making wild speculations at this point).
Do you think you could create a small project with a sample test that shows the problem? Then I can play with that and hopefully gain some understanding of why it breaks?