2012-08-02 81 views
2

我有一个使用Groovy/Grails工具套件版本3.0.0M3在JDK 1.7上运行的Windows 7上创建的Grails项目。 Grails版本是2.0.4。grails test-app单元测试类未找到待测试类的最新版本(找不到符号)

有一个单元测试类运行良好,直到我通过更改方法名称和添加新方法来重构待测试类。被测试的类位于src/java下的包中。单元测试类已更新以反映重构更改,但现在执行grails test-app时,单元测试会报告编译错误,指出它“找不到符号”。所有这些错误都与重命名的方法或新方法有关我补充说。请注意,工具套件在项目浏览器窗格中不显示任何错误标记。

我已经从命令行和Tool Suite以及Tool Suite project-> clean命令中运行grails clean。我的BuildConfig.groovy为grails.project.class.dir设置了正确的目录,并验证了该位置内的类文件在编译后正在更新。以下是报道

XMLUtilTest.java:73: error: cannot find symbol

Package pkg = u.unmarshalPackage(packageRefXml); 
       ^

symbol: method unmarshalPackage(String) location: variable u of type XMLUtil

回答

0

请尝试以下错误消息之一:

  1. 对项目运行刷新依赖。 (在选择项目时按Alt + G R)再次运行测试。加工?
  2. 尝试在命令行上运行test-app。它工作吗?
  3. 您也可以尝试在运行方式测试右击 - > JUnit测试

我的猜测是,STS内Grails是使用一些老班的。 Eclipse项目将使用target-eclipse/classes作为其输出文件夹,但默认情况下,Grails将使用target/classes作为其输出文件夹。

我会在项目内部的命令行中为文件XMLUtil*.class做一个grep,您可能会发现重复项所在的位置。

+0

项目1和2没有工作,但项目3没有工作。你的建议使用grep解决了我的问题。昨天,我一直在使用Win 7搜索,它很好地发现了所有的类文件,并通过删除target/classes和target-eclipse/classes来清除这些文件。根据你的建议,我拿出了可信的cygwin grep,并在我的lib目录下的旧jar中找到了违规类。我杀了那个罐子,测试现在运行。 – 2012-08-03 22:18:02

+0

不错。我不会期待这一点。 :) – 2012-08-03 23:06:03