未找到类:IntelliJ中的空测试套件

时间:2016-09-01 23:29:10

标签: java unit-testing intellij-idea junit

我刚刚在我的大学开始计算机科学课程,而且我在使用IntelliJ时遇到了一些问题。当我尝试运行单元测试时,我收到消息

Process finished with exit code 1
Class not found: "edu.macalester.comp124.hw0.AreaTest"Empty test suite.

我还在屏幕左侧看到一条标题为“未找到测试”的消息。我的测试代码在这里:

package edu.macalester.comp124.hw0;


import org.junit.Test;
import static org.junit.Assert.*;

public class AreaTest {

    @Test
    public void testSquare() {
    assertEquals(Area.getSquareArea(3.0), 9.0, 0.001);
    }

    @Test
    public void testCircle() {
    assertEquals(Area.getCircleArea(3.0), 28.2743, 0.001);
    }
}

我的项目代码在这里:

package edu.macalester.comp124.hw0;

import java.lang.Math;
public class Area {

/**
 * Calculates the area of a square.
 * @param sideLength The length of the side of a square
 * @return The area
 */
public static double getSquareArea(double sideLength) {
    // Has been replaced by correct formula
    return sideLength * sideLength;
}

/**
 * Calculates the area of a circle.
 * @param radius The radius of the circle
 * @return The area
 */
public static double getCircleArea(double radius) {
    // Replaced by correct value
    return radius * 2 * Math.PI;
}

}

如何让我的测试工作?提前致谢。我正在使用最新版本的IntelliJ IDEA CE。

38 个答案:

答案 0 :(得分:102)

有同样的信息。我不得不删除运行/调试配置。

在我的情况下,我之前将单元测试作为本地测试运行。之后我将测试移到androidTest包并尝试再次运行它。 Android Studio记住了上次运行的配置,因此它尝试再次运行它作为本地单元测试,产生了同样的错误。

删除配置并再次运行测试后,它会生成一个新配置并运行。

enter image description here

答案 1 :(得分:46)

我去了

File -> Invalidate Caches/Restart...

然后它对我有用。

答案 2 :(得分:39)

我有同样的问题。我重建了项目,它帮助了我。

转到构建 - > 重建项目

之后,如果您使用Maven工具,我建议使用选项重新导入所有Maven项目


如果没有帮助,请尝试其他可能的解决方案:

  • 转到文件 - > 使缓存无效/重新启动 - > 无效并重新启动

或:

  • 在您的Maven项目结构中 src / main / java 右键单击 java 目录并选择选项将目录标记为 - > 来源根

    测试目录同样如此: src / test / java 右键单击 java 目录并选择选项将目录标记为 - > 测试 来源根

或:

  • 转到运行 - > 修改配置,并在 JUnit 部分中删除测试配置。应用更改。然后尝试运行您的测试。应自动创建新配置。

或:

  • 转到文件 - >项目结构,选择模块,然后选择适当的模块并转到路径标签。
    检查选项:
    应选择单选按钮 使用模块编译输出路径

    输出路径应该在您的项目中。 测试输出路径也应该是项目中的目录。例如,它看起来类似:
    输出路径: C:\ path \ to \ your \ module \ yourModule \ target \ classes
    测试输出路径: C:\ path \ to \ your \ module \ yourModule \ target \ test-classes

    排除输出应取消选择路径

答案 3 :(得分:14)

如果您的测试文件夹已作为单独的模块导入(项目视图中的文件夹图标上显示一个小方块),也可能发生这种情况。
通过在项目视图中选择测试文件夹来删除模块,然后按 DEL 然后开始测试 如果出现带有错误消息的弹出对话框,但未选择任何模块,请从下拉列表中指定根模块。

答案 4 :(得分:12)

就我而言,我将所有其他内容放在正确的位置,但是我正在与 kotlin 一起构建 java库。  我只是忘记应用插件了:

apply plugin: 'kotlin-android'

现在它可以按预期工作了。

答案 5 :(得分:12)

启动一个新的IntelliJ项目后,我遇到了类似的问题。我发现我的模块的“模块编译输出路径”没有正确指定。当我将模块的“编译输出路径”中的路径分配到正确的位置时,问题就解决了。编译输出路径在项目设置中分配。在Modules下,选择所涉及的模块,然后选择Paths选项卡......

“项目设置”中的“路径”选项卡模块对话框

screenshot

...我将编译器输出发送到父Project项目文件夹中名为“output”的文件夹。

答案 6 :(得分:9)

所以,我的问题是文件夹名称。我打电话给我的代码文件夹Classes 2016/2017,这是IntelliJ不喜欢的。只需删除斜杠(或路径中的其他违规字符),重新导入项目,就可以了![/ p>

答案 7 :(得分:7)

在Android Studio 3.0 +中,有时UI测试会以某种方式解释为单元测试,并且不会要求选择目标部署。您可以转到编辑配置并将其标记为集成测试,它将开始工作

答案 8 :(得分:5)

有趣的是,由于不同的原因,我多次遇到这个问题。对于例如 使缓存无效并重新启动 也有所帮助。

最后我修正了文件 - >中的输出路径。项目结构 - >项目 - >项目编译器输出到: absolute_path_of_package / out

例如: / Users / random-guy / myWorkspace / src / DummyProject / out

答案 9 :(得分:5)

我有同样的问题,重建/无效缓存等不起作用。看起来这只是Android Studio中的一个错误...

临时解决方案就是从命令行运行单元测试:

./gradlew test

请参阅:https://developer.android.com/studio/test/command-line.html

答案 10 :(得分:5)

当我从Maven导入一些jar时,我遇到了同样的问题,随后导致empty-test-suite错误。

在我的情况下,这是因为maven重置了模块文件。我通过清除默认配置解决了这个问题:

  1. 使用 shift 打开项目结构 - ctrl - alt - s 快捷方式
  2. Screenshot of PModules Sources

    1. 查看模块>来源并填写Sources包或测试包。

答案 11 :(得分:4)

我遇到了同样的问题(Android Studio 3.2 Canary 4),我尝试了其他答案中描述的大部分建议 - 没有任何成功。请注意,这是在我将文件从test移动到androidTest文件夹后发生的。它仍然在运行配置中显示为测试而不是仪器测试。

我最终创建了一个新文件:

  
      
  1. 使用不同的名称创建新的检测测试类。
  2.   
  3. 复制班上的所有代码。
  4.   
  5. 运行它。
  6.   
  7. 删除旧课程。
  8.   
  9. 将新类重命名为所需名称。
  10.   

答案 12 :(得分:4)

重新导入项目或模块可以解决问题。 我在开发时通过重命名包名来解决这个问题。但输出路径测试输出路径是旧路径。因此intellij无法从旧路径中找到该类。 所以最简单的方法是纠正输出路径和测试输出路径。

Intellij module setting

答案 13 :(得分:4)

如果未正确配置module-和/或project-jdk,也会发生这种情况。

答案 14 :(得分:2)

删除.idea并重新导入SBT项目为我解决了这个问题。

答案 15 :(得分:2)

如果项目存在编译问题,则可能无法运行测试。 因此,首先构建项目为Build-> Build Project。 成功编译后,重新运行测试。

如果无法解决问题,则只需关闭项目窗口,然后删除项目并重新导入为Gradle / Maven项目,即可通过覆盖现有IntelliJ创建的文件为您进行所有设置。这将删除创建的无效缓存。

答案 16 :(得分:2)

就我而言,IntelliJ没有因为一个奇怪的原因编译测试源。我只是修改了构建配置,并在clean test-compile部分

中添加了maven目标Before launch

答案 17 :(得分:1)

只需在“项目”窗口中单击鼠标右键,然后选择

即可

"运行 YourTest "。

现在一切都刚好开始,可能是因为错误的运行配置正在重建。

答案 18 :(得分:1)

我尝试了所有解决方案,但没有一个帮助。最后我在调试模式下运行测试....它开始工作。也许某些maven的缓存被清除了。很难说。有用。试试mvn test -X

答案 19 :(得分:1)

在安装新版本的IntelliJ并且IntelliJ插件尚未更新后,可能会发生这种情况(至少对我一次;)。

您可能必须从IntelliJ帮助菜单中手动执行Check for updates…

答案 20 :(得分:1)

在您的Maven项目结构src / main / java中,右键单击java目录,然后选择选项将目录标记为-> Sources Root

类似地对测试目录执行相同操作:src / test / java右键单击java目录,然后选择选项将目录标记为->测试源根目录

为我工作:-)

答案 21 :(得分:1)

在我的情况下,通过进入我的build.gradle并更改

来解决问题
dependencies {
    testImplementation 'junit:junit:4.12'
}

dependencies {
    testCompile 'junit:junit:4.12'
}

答案 22 :(得分:1)

就我而言,测试名称有问题:)。

如果名字是: dummyNameTest然后找不到任何测试,但以防万一 testDummyName一切正常

答案 23 :(得分:1)

这可能是因为文件夹未设置为测试源,可以通过模块设置>完成。模块。

答案 24 :(得分:1)

按照Intellij中的以下步骤进行操作(并附有屏幕截图以更好地理解):

  1. 转到文件->项目结构

enter image description here

  1. 导航到模块,然后选择存在Junit测试文件的模块,然后选择“使用模块编译输出路径”单选按钮。

  2. 提及相应的类文件夹路径,类似于所附的屏幕截图。

enter image description here

  1. 请申请,好的。 这对我有用!

答案 25 :(得分:1)

得到同样的错误。我的设备没有连接到android studio。当我连接到工作室。有用。这解决了我的问题。

答案 26 :(得分:1)

您的测试是否需要Android设备(模拟器或硬件)? 如果是这样,它被称为“检测测试”并位于“module-name / src / androidTest / java /”中。
如果没有,它被称为“本地单元测试”并位于“module-name / src / test / java”

https://developer.android.com/training/testing/start/index.html

我得到了同样的错误,因为我编写了一个本地单元测试,但它被放置在用于检测测试的文件夹中。将本地单元测试移动到“src / test / java”文件夹为我修复了它。

答案 27 :(得分:1)

我有同样的问题。在我的情况下,我在主文件夹之外的包/文件夹中有一些测试类。但是,当我检查运行配置时,它总是试图在主文件夹中查找类(而不是我在main之外的包)。 因此,如果是这种情况,您必须将包移动到Run配置所指向的位置。 或者将运行配置更改为指向您的包。

答案 28 :(得分:0)

在IntelliJ IDEA中将包/目录标记为“测试源”。

答案 29 :(得分:0)

第一件事,我们需要了解为什么会这样并且错误消息很清楚:

  

进程以退出代码1完成   找不到类:“ edu.macalester.comp124.hw0.AreaTest”空测试套件。

因此,这主要是在创建单元测试类之后,在从类级别运行方法(测试)之前分别运行方法(测试)时发生的。就这样

答案 30 :(得分:0)

这里使用IDEA 15.0.6也有同样的问题,除了重命名测试类所在的软件包之外什么都没有帮助。之后我将其重命名为原来的名称并且它仍然有效,因此重命名操作可能已经清除了一些缓存

答案 31 :(得分:0)

删除和重新创建运行配置也有帮助。

答案 32 :(得分:0)

My fix for this issue was with folder names and paths.

My test were missing /java/ folder for some reason and IntelliJ didn't like that.

so from ../test/com/.. to ../test/java/com/..

and it is ok

答案 33 :(得分:0)

通过在运行单元测试之前手动运行testClasses任务来解决。

答案 34 :(得分:0)

对我来说,项目是在项目之外编译的。我只是改变了路径。 用于更改路径(我使用mac)。

  • 转到文件 - >项目结构
  • 转到左侧的模块。
  • 选择路径,选择单选按钮(使用模块编译输出路径)
  • 提供项目内的输出路径和测试输出路径
  • 取消选择排除输出路径。
  • 转到文件 - >单击Invalidate Cache并重新启动

答案 35 :(得分:0)

对我有用的是右键点击Project folder -> Maven -> Generate Sources and Update Folders

答案 36 :(得分:0)

我的环境也遇到了同样的问题(MacOS)。我使用的是IntelliJ 2016.我有一个Java库项目(gradle)。

我做的是

  1. 从IntelliJ旧版本(如IntelliJ14)打开/导出项目。 这成功地发生了,我通过制作项目和运行测试用例来验证它。
  2. 然后我通过IntelliJ 2016再次导入了该项目。 之后它运行良好(构建和测试用例运行)。

答案 37 :(得分:0)

对我来说,这是因为我的项目被编译到项目之外的目录中。在路径中,输出路径是\ production \ project_name和\ test \ project_name,它们将它们放在C:\ production \ project_name中。将它们更改为项目的完整路径允许我的测试访问类文件。