【问题标题】:grails test-app unit test class not finding latest version of class under test (cannot find symbol)grails test-app 单元测试类没有找到被测类的最新版本(找不到符号)
【发布时间】:2012-07-31 20:01:49
【问题描述】:

我有一个使用 Groovy/Grails Tool Suite 版本 3.0.0M3 创建的 Grails 项目,该项目在带有 JDK 1.7 的 Windows 7 上运行。 Grails 版本是 2.0.4。

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

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

XMLUtilTest.java:73:错误:找不到符号

 Package pkg = u.unmarshalPackage(packageRefXml);
                ^

符号:方法 unmarshalPackage(String) 位置:XMLUtil 类型的变量 u

【问题讨论】:

    标签: grails sts-springsourcetoolsuite


    【解决方案1】:

    尝试以下方法:

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

    我的猜测是 STS 内部的 grails 正在使用一些旧类。 Eclipse 项目将使用 target-eclipse/classes 作为其输出文件夹,但 Grails 默认使用 target/classes 作为其输出文件夹。

    我会在项目内部的命令行上对名为 XMLUtil*.class 的文件执行 grep,然后您可能会找到重复项所在的位置。

    【讨论】:

    • 第 1 项和第 2 项无效,但第 3 项有效。您使用 grep 的建议解决了我的问题。昨天,我一直在使用 Win 7 搜索,它很好地找到了所有类文件,我通过删除 target/classes 和 target-eclipse/classes 清理了这些文件。根据您的建议,我取出了可信赖的 cygwin grep,它在我的 lib 目录中的一个旧 jar 中找到了有问题的类。我杀死了那个 jar,测试现在运行。
    • 不错。我没想到会这样。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 2016-03-16
    • 2013-04-24
    相关资源
    最近更新 更多