【问题标题】:Running tests on Intellij: Class not found在 Intellij 上运行测试:找不到类
【发布时间】:2014-04-02 01:14:14
【问题描述】:

我正在评估 IntelliJ (13.0.2 133.696),无法在 IDE 中运行 jUnit 测试。

我的项目是一个多模块 gradle 项目并使用 scala。

测试类位于 src/test/scala/xxx/xxxxx/xxx/xxxx/xxxxx 下,每次我尝试从 IDE 运行时都会遇到相同的错误:

Class not found: "xxx.xxxxx.xxx.xxxx.xxxxx.AccountRepositoryTest"

测试类没什么花哨的,简单的 jUnit 测试:

@RunWith(classOf[SpringJUnit4ClassRunner])
@ContextConfiguration(classes = Array(classOf[DataConfig], classOf[SettingsConfig]))
class AccountRepositoryTest extends AssertionsForJUnit {

我发现了一个相关问题 Cannot run Junit tests from IDEA 13.0 IDE for imported gradle projects,但提供的修复(升级到 13.0.2)不起作用。

我什至尝试升级到最新的 EAP,仍然是同样的问题。

【问题讨论】:

  • Spring JUnit 和 Scala 库应该在类路径中。
  • 刷新 gradle 项目解决了这个问题。

标签: scala intellij-idea gradle


【解决方案1】:

检查该测试的运行/调试配置 “使用模块的类路径和 SDK:”应该指向您的模块。

与此同时,您的模块必须具有 Scala 方面,并且该类必须在 “测试源文件夹”。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,在我的情况下,问题是由于“项目编译器输出”路径在项目设置中留空。

    为了解决这个问题,我在项目根目录中创建了一个classes 目录,并将Project compiler output 设置为绝对路径(使用 按钮进行浏览)。

    【讨论】:

    • 我已经为此注册了一个错误。请投票! youtrack.jetbrains.com/issue/IDEA-148213
    • 如果您也像我一样在“项目编译器输出”字段中输入了无效的内容,也会发生这种情况。我刚刚输入了“out”,但它必须是完整路径。
    • 我的编译器输出字段为空白,但在尝试@Russ Bateman 的回答后我的问题得到了解决。
    【解决方案3】:

    确保您的测试类包和您正在为其编写测试用例的类不同。如果测试用例和类都具有相同的包,编译器将在 src 文件夹中查找并忽略 test 文件夹。

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题。我将模块设置 -> 模块 -> 路径 -> 测试输出路径中的路径更改为我的测试类字节码目录(排除输出路径)。现在一切正常!

      【讨论】:

      • 我正在使用 Gradle 2.6 并忘记添加“应用插件:'scala'”。添加后,一切对我来说都很好。
      【解决方案5】:

      转到项目设置 -> 项目。

      填写项目编译器输出: 前任。 D:\repo\Project\out

      转到模块 -> 路径

      确保:

      输出路径类似于 D:\repo\Project\out\production

      测试输出路径如 D:\repo\Project\out\test

      应该可以!

      【讨论】:

      • 刚刚在 IntelliJ14 上遇到了同样的问题。设置以前是相对目录,必须设置绝对目录。谢谢!
      【解决方案6】:

      我遇到了同样的问题,Intellij 没有找到测试输出路径。但是,运行常规应用程序没有问题。

      对我来说,修复是从继承的项目编译路径更改为使用模块编译输出路径。

      项目设置 -> 模块 ->(您的模块)-> 路径(选项卡)

      将单选按钮更改为“使用模块编译输出路径”。对我来说,自动填充的建议有效,如果自动建议不起作用,您可能需要手动输入正确的测试输出路径。请记住应用设置更改。

      【讨论】:

        【解决方案7】:

        我浏览了其中一些答案,对项目设置大惊小怪,尝试了一些事情等等,但没有任何效果。 (完全披露:我不想在这里玩弄 Gradle;我只是在使用 Maven,但我不明白这与 Gradle 有什么关系。)

        我正在使用 IDEA 14。

        我发现它起作用了,因为它只是似乎 IntelliJ 迷失了方向,是这样的:

        $ rm -rf .idea project-name.iml
        

        然后重新启动 IntelliJ 并执行 File -> Open -> 导航到我的项目的根目录等--简而言之,只是重新创建了我的项目。

        IntelliJ 克服了它。我最初可能在这个项目中搞砸了一些东西,因为我已经对包名和类名进行了大量重构,甚至更改了项目名称。 (这可能是我的错。)

        【讨论】:

        • 谢谢,对我来说,只需移动 *.iml 文件并再次生成它就足够了(在 maven 选项卡中 - 与 maven 有同样的问题)
        • 我移动了一些模块,它也破坏了 .iml 配置文件中的项目结构,导致类似的症状。
        • 这有一个缺点是让我花费大量时间,因为我的项目往往有很多模块,在我必须这样做的任何时候设置(重置)模块本身。每当我进行大量模块间重构(移动)时,似乎都会发生这种情况。
        • 为我工作。我的项目有子 maven 模块,而不是创建 1 个 rootmodule.iml,它为每个导致问题的子 maven 模块创建了一个 iml 文件。为了解决这个问题,我不得不重新导入项目。
        • 对于较大的项目,您可能需要额外的find . -name "*.iml" -delete
        【解决方案8】:

        您可以尝试使缓存无效并重新启动。当您添加新的依赖项/类时,这通常会解决问题。

        【讨论】:

          【解决方案9】:

          只需在 Intellij IDEA 中将测试文件的文件夹标记为测试文件夹即可。这对我有用。 如果您有多个包含同名源文件的目录,请将包添加到您的类源文件(如果不存在)!

          【讨论】:

            【解决方案10】:

            修改模块的.iml文件的tag中的内容,如下所示。它对我有用。

            <content url="file://$MODULE_DIR$">
              <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
              <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
              <excludeFolder url="file://$MODULE_DIR$/target" />
            </content>
            

            【讨论】:

              【解决方案11】:

              IDEA 重启为我解决了这个问题。

              【讨论】:

                【解决方案12】:

                只需“构建 > 重建项目”即可为我工作。

                【讨论】:

                  【解决方案13】:

                  遇到了同样的问题,通过在完整路径中的任何位置都没有空格、冒号、句点或其他特殊字符的目录路径中重新创建项目来修复它。显然 IntelliJ 对项目路径可能很挑剔。

                  【讨论】:

                    【解决方案14】:

                    在构建、清理和重建、关闭和打开项目(使用 intellij)后,我的问题仍然存在,项目编译器输出是正确的;最后,我只是从我的项目目录中删除了该文件夹。请注意,我的问题仅在于新添加的 Junit 调用了新添加的方法。 Junits 的其余部分工作正常。

                    【讨论】:

                      【解决方案15】:

                      对我来说,这是一项测试失败并且错误具有误导性。

                      所以:

                      1. 我将 intellij 中的模块重新导入为独立项目
                      2. 运行测试
                      3. 修复测试问题
                      4. 再次运行模块并开始工作。

                      【讨论】:

                        【解决方案16】:

                        对于 gradle 项目 X,删除两者:

                        • X/构建
                        • X/out

                        再次运行测试帮助我解决了这个问题。

                        【讨论】:

                          【解决方案17】:

                          tl;博士: 缺少文件扩展名可能会导致此错误。

                          详情:

                          在我的例子中,测试类缺少.java 扩展。例如。一种 文件名为 UserTest 而不是 UserTest.java

                          • 很难找到,从 IDE 中看一切正常 (显然 IntelliJ 宁愿使用文件内容来显示 对应的符号)。
                          • 只要我从命令行使用mvn(在 pom.xml 中启用了 surfire 插件)或专用的 maven 启动器配置,就不是问题,但导致 使用 IntelliJs 测试或覆盖菜单/按钮启动时的初始错误消息。
                          • 添加缺失的文件结尾后,一切正常。

                          【讨论】:

                            【解决方案18】:

                            按此顺序尝试:

                            • 重建项目(+奇怪的是,选择另一个应用程序,重新选择上下文切换的想法,似乎强制文件重新加载?!)
                            • 使缓存/重启想法无效
                            • 重新导入项目/创建新项目

                            【讨论】:

                              猜你喜欢
                              • 2014-08-04
                              • 2018-05-29
                              • 2014-10-20
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2017-09-16
                              相关资源
                              最近更新 更多