Unit testing Grails 2.3使用IVY解析器进行单元测试

Unit testing Grails 2.3使用IVY解析器进行单元测试,unit-testing,maven,grails,ivy,spock,Unit Testing,Maven,Grails,Ivy,Spock,如果我使用grails 2.3创建应用程序,创建一个简单的spock单元测试,并在grails中更改配置以使用ivy解析器: grails.project.dependency.resolver = "ivy" // or maven 单元测试崩溃,出现以下错误: | Running without daemon... | Running 1 unit test... | Running 1 unit test... 1 of 1 | Error Error running unit test

如果我使用grails 2.3创建应用程序,创建一个简单的spock单元测试,并在grails中更改配置以使用ivy解析器:

grails.project.dependency.resolver = "ivy" // or maven
单元测试崩溃,出现以下错误:

| Running without daemon...
| Running 1 unit test...
| Running 1 unit test... 1 of 1
| Error Error running unit tests: org/hamcrest/SelfDescribing (NOTE: Stack trace has been filtered. Use --verbose to see entire trace.)
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
        at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1259)
        at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1259)
        at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1259)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
        ... 7 more
| Error Error running unit tests: org/hamcrest/SelfDescribing
| Running 1 unit test....
| Running 1 unit test.....
| Tests FAILED  - view reports in C:\ivytry\foobar\target\test-reports
有什么办法可以解决这个问题吗?我们需要使用Ivy的原因是Maven似乎不支持自定义远程存储库,我需要在其中指定用户名/密码-此外,在buildconfig中,但我不希望我的凭据受源代码管理:)


编辑(已解决):查看评论

问题是因为idea 12和grails 2.3的“臭名昭著的”intellij修复程序——恢复“源代码”和“javadoc”jar文件,修复了问题

Grails2.3.0中的经验法则:-运行
依赖关系报告
,查看是否存在任何冲突。但与测试无关——至少我不知道……Hamcrest并没有出现在依赖关系报告中。但这意味着,使用Grails2.3和ivy解析器进行OOTB测试不起作用?看起来很奇怪!我可以在带有ivy resolver的grails 2.3示例应用程序的测试报告中看到
hamcrest
。通常,它捆绑在spock中(2.3中的默认测试f/w),但我在您的使用中没有看到spock。您会得到一个
NoClassDefFoundError
,这意味着您有可用的hamcrest,但它会与其他内容发生冲突。显示
BuildConfig
。默认为BuildConfig。没有更改“创建应用程序”中的任何内容。唯一改变的是依赖项解析程序。。。我这里没有,但是上面应该足够了。如果BuildConfig是默认的,那么
create unit test
create integration test
应该创建一个spock规范而不是JUnit测试。你能创建一个spock规范并尝试测试它吗。