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

问题描述 投票:156回答:36

我刚刚在我的大学开始计算机科学课程,而且我在使用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。

java unit-testing intellij-idea junit
36个回答
104
投票

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

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

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

enter image description here


5
投票

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

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

./gradlew test

见:https://developer.android.com/studio/test/command-line.html


5
投票

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

最后我通过将文件 - >项目结构 - >项目 - >项目编译器输出中的输出路径更正为:absolute_path_of_package / out来修复它

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


4
投票

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


4
投票

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

Intellij module setting


4
投票

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

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

  1. 使用不同的名称创建新的检测测试类。
  2. 复制班级中的所有代码。
  3. 运行。
  4. 删除旧班。
  5. 将新类重命名为所需名称。

2
投票

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


2
投票

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


2
投票

如果项目有编译问题,那么测试可能无法运行。首先将项目构建为Build - > Build Project。编译成功后重新运行测试。

如果没有任何效果,那么只需关闭项目窗口并删除项目并重新导入为Gradle / Maven项目,它将通过覆盖现有IntelliJ创建的文件为您设置所有内容。这将删除创建的无效缓存。


1
投票

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


1
投票

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

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

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


47
投票

我去了

File -> Invalidate Caches/Restart...

然后它对我有用。


1
投票

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


1
投票

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


1
投票

在我的情况下,问题是通过进入我的build.gradle并改变来解决的

dependencies {
    testImplementation 'junit:junit:4.12'
}

dependencies {
    testCompile 'junit:junit:4.12'
}

1
投票

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


1
投票

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

“运行YourTest”。

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


1
投票

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

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


1
投票

在你的Maven项目结构中,src / main / java右键单击java目录并选择选项Mark目录为 - > Sources Root

同样用test目录做同样的事情:src / test / java右键单击java目录并选择选项Mark目录为 - > Test Sources Root

为我工作:-)


1
投票

在我的情况下,测试名称有问题:)。

如果名称是:dummyNameTest然后没有找到测试,但如果testDummyName一切都很好


0
投票

同样的问题在这里使用IDEA 15.0.6,没有任何帮助,除非我重命名测试类所在的包。之后我将其重命名为其原始名称,它仍然有效,所以重命名操作可能已经清除了一些缓存。


0
投票

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


39
投票

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

转到Build - > Rebuild Project

之后,如果您使用的是Maven工具,我建议使用Reimport All Maven Projects选项

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

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

要么:

  • 在你的Maven项目结构中,src / main / java右键单击java目录并选择选项Mark目录为 - > Sources Root 同样用test目录做同样的事情:src / test / java右键单击java目录并选择选项Mark目录为 - > Test Sources Root

要么:

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

要么:

  • 转到文件 - >项目结构,选择模块,然后选择适当的模块并转到路径选项卡。 检查选项: 单选按钮应选择使用模块编译输出路径。 输出路径应该在项目中。测试输出路径也应该是项目中的目录。例如,它看起来类似: 输出路径:C:\ path \ to \ your \ module \ yourModule \ target \ classes 测试输出路径:C:\ path \ to \ your \ module \ yourModule \ target \ test-classes 应取消选择排除输出路径。

0
投票

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

我做的是

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

14
投票

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


12
投票

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

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

screenshot

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


12
投票

就我而言,我把所有其他东西放在了正确的位置,但我正在使用kotlin开发一个java库。我忘了申请插件:

apply plugin: 'kotlin-android'

现在,它现在按预期工作。


9
投票

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


7
投票

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


5
投票

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

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

  1. 使用shift-ctrl-alt-s快捷方式打开项目结构

  1. 查看Modules> Sources并填写Sources包或test包。
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.