在Intellij上运行测试:未找到类

时间:2014-02-28 20:33:31

标签: scala intellij-idea gradle

我正在评估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,仍然是同样的问题。

18 个答案:

答案 0 :(得分:23)

我有同样的问题,在我的情况下,问题是由于"项目编译器输出"在项目设置中将路径留空。

Project Structure configuration screen

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

答案 1 :(得分:18)

我查看了一些这些答案,与“项目设置”相关,尝试了一些事情,等等,没有任何效果。 (完全披露:我不想在这里玩Gradle;我只是使用Maven,但我不知道这与Gradle有什么关系。)

我正在使用IDEA 14。

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

$ rm -rf .idea project-name.iml

然后重新启动IntelliJ并做了文件 - >打开 - >导航到我的项目的根目录等 - 简而言之,只是重新创建了我的项目。

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

答案 2 :(得分:12)

转到项目设置 - >项目

填写Project编译器输出: 恩。 d:\回购\项目\出

转到模块 - >路径

确保:

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

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

应该工作!

答案 3 :(得分:3)

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

答案 4 :(得分:3)

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

同时你的模块必须有一个Scala方面,那个类必须在里面 “测试源文件夹”。

答案 5 :(得分:2)

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

答案 6 :(得分:2)

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

答案 7 :(得分:1)

按以下顺序尝试:

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

答案 8 :(得分:1)

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

答案 9 :(得分:1)

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

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

项目设置 - >模块 - > (您的模块) - >路径(标签)

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

答案 10 :(得分:0)

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

<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 :(得分:0)

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

答案 12 :(得分:0)

简单地,“构建>重建项目”对我有用。

答案 13 :(得分:0)

有相同的问题,请通过在目录路径中重新创建项目来解决该问题,该目录路径在完整路径中的任何地方都没有空格,冒号,句号或其他特殊字符。显然,IntelliJ对项目路径可能很挑剔。

答案 14 :(得分:0)

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

答案 15 :(得分:0)

对我来说,这是一个测试失败,并且错误是错误的。

所以:

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

答案 16 :(得分:0)

从Gradle项目X开始,同时删除两个项目:

  • X /构建
  • X / out

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

答案 17 :(得分:0)

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

详情:

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

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