ChatGPT解决这个技术问题 Extra ChatGPT

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

我刚刚在我的大学开始计算机科学课程,我遇到了一些 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。

很多事情都可能出错。对我来说,这就像在终端中输入 mvn clean package 一样简单。不确定为什么 IntelliJ 一开始就错误地导入了项目。
对我来说,只需将文件夹设置为“测试资源根”...
Build -> Clean and Build -> Rebuild 对我来说已经足够了。
检查测试没有被禁止在 app/build.gradle 中编译:tasks.whenTaskAdded { task -> if(task.name.contains("Test")) { task.enabled = false } }

c
com2ghz

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

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

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

https://i.stack.imgur.com/VTLIq.png


我认为在大多数情况下,您的解决方案将是最普遍和最不神奇的。在我的项目中工作就像一个魅力。
我试过了,但它自己没有用。我还不得不使现金无效。 File > Cashes / Restart
我试过了,也使现金无效。但还是不行。
在我记得单击明显的确定按钮而不是仅仅关闭对话框之后,这对我有用:-)
我在我的 Android Studio 中没有看到任何“特定仪器运行程序”条目。
u
user674669

我去了

File -> Invalidate Caches/Restart...

然后它对我有用。


我这样做了,然后还不得不删除测试配置。
在我的情况下它没有帮助。
File > Invalidate Caches/Restart > Just Restart 为我工作
s
sobczak.dev

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

转到构建 --> 重建项目

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

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

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

或者:

在您的 Maven 项目结构中 src/main/java 右键单击 java 目录并选择选项 Mark directory as --> Sources Root 类似地对测试目录执行相同操作: src/test/java 右键单击 java 目录并选择选项 Mark directory as --> 测试源根目录

或者:

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

或者:

转到 File --> Project Structure,选择 Modules,然后选择适当的模块并转到 Paths 选项卡。检查选项: 单选按钮 Use module compile output path 应该被选中。输出路径应该在您的项目中。测试输出路径也应该是项目内的目录。例如,它可能看起来类似: 输出路径:C:\path\to\your\module\yourModule \target\classes 测试输出路径:C:\path\to\your\module\yourModule \target\test-classes 排除输出应该取消选择路径。


重建项目 (Build -> Rebuild Project) 对我有用。谢谢!
这个解决方案对我有用,关于模块和使用输出路径的最后一件事。谢谢。
作为更绝望的解决方案,删除 .idea 文件并再次打开项目。但是,您将丢失一些配置/设置。
<project-root>/src/test/java 设置为测试根,Build -> Rebuild Project 对我有用。此外,当包含测试的类位于包名以 java.* 开头的包中时,我得到了安全异常。
它没有帮助我。
T
Tobi

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


这也是我的问题(测试文件夹上的正方形 - 不知道那是什么意思!);要修复,我打开运行配置,发现“使用模块的类路径:”设置为测试模块。我改为将其更改为我的项目的类路径,并且效果很好。感谢您指出“单独的模块”问题!
这正是发生在我身上的事情。我使用 start.spring.io 创建了一个 Spring 项目并将其打开。之后我启动了 SpringBootTest 并遇到了“找不到类:”...“空测试套件”错误。在遵循您的解决方案并按下测试文件夹上的 DELETE 按钮并重新创建运行配置后,一切都很好。附加提示:当按下测试文件夹上的删除按钮时,会出现一个对话框,上面写着“不会删除任何文件”。所以不用担心按下按钮。
嘿,谢谢兄弟,它对我有用
c
crgarridos

就我而言,我把其他所有东西都放在了正确的地方,但是我正在使用 kotlin 开发一个 java 库。我只是忘了应用插件:

apply plugin: 'kotlin-android'

现在它正在按预期工作。


我也是。创建模块时没有 Kotlin 选项很烦人。
r
rhgb

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

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

https://i.stack.imgur.com/y2DXW.jpg

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


a
arnbobo

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


这对我有帮助。对于其他人,我在 Dropbox 中有该文件夹。当我将它从 Dropbox 中移出并重新导入时,问题就消失了。
这个答案值得诺贝尔和平奖!
T
Tushar Nallan

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


此外,在 Android Studio 3.0.1 上,测试旁边的运行按钮不起作用。更新到 3.1 canary 8 后,它确实又开始工作了。
s
swapnil

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

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

您也可以使缓存无效。

File -> Invalidate Caches/Restart


m
mbo

我遇到了同样的问题,重建/无效缓存等不起作用。似乎这只是Android Studio中的一个错误......

一个临时的解决方案是从命令行运行你的单元测试:

./gradlew test

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


R
Richard Slater

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

就我而言,这是因为 maven 重置了模块文件。我通过清除默认配置解决了这个问题:

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

https://i.stack.imgur.com/okjwu.png

查看 Modules > Sources 并填写 Sources 包或测试包。


j
jhegedus

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


它在删除 .idea 文件夹并重新导入 maven 项目后工作(y)
这对我来说也是一样。我经历了上面的建议,但没有一个奏效。我删除了 .idea 基本文件夹以及子模块中的 .iml 文件。
也与我的 gradle 项目一起工作。
B
Bejond

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

https://i.stack.imgur.com/tK9vz.png


出于某种原因,继承项目路径在 MacO 上对我不起作用,您知道为什么会发生这种情况吗?
@Johnny_D您确定您的问题是由于重命名包引起的吗?
M
Micer

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

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

创建具有不同名称的新检测测试类。复制你班级的所有代码。运行。删除旧类。将新类重命名为所需的名称。


不错的主意=)谢谢!
s
some random guy

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

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

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


正是这个让我的测试套件运行起来!谢谢!
M
Maarten Dhondt

当您的模块和/或项目 jdk 配置不正确时,也会发生这种情况。


请澄清“正确的配置”我认为这对有这个问题的用户没有帮助。谢谢!
v
vatbub

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


尝试了以上所有方法,但只有这个有帮助:)谢谢!
I
Inweo

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

如果名称是:dummyNameTest,则在找到的地方没有测试,但如果 testDummyName 一切正常


M
Mr Nobody

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

同样对测试目录执行相同操作: src/test/java 右键单击 java 目录并选择选项 Mark directory as --> Test Sources Root

为我工作:-)


m
mykey

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


P
Patrick

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

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

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


A
Aman Srivastava

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


e
eaorak

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


M
Mukul Aggarwal

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

转到文件-> 项目结构

转到左侧的模块。

选择路径,选择单选按钮(使用模块编译输出路径)

提供项目内部的输出路径和测试输出路径

取消选择排除输出路径。

转到文件->单击无效缓存并重新启动


b
bremen_matt

就我而言,问题已通过进入我的 build.gradle 并更改

dependencies {
    testImplementation 'junit:junit:4.12'
}

dependencies {
    testCompile 'junit:junit:4.12'
}

令人惊讶的是,这对我也有帮助。看起来它强制重新编译。在没有帮助的情况下尝试了几次清理/缓存
对于它的价值,对我来说这个问题就像我上面提出的解决方案一样得到了解决。但是,原因是我使用的插件不支持“实现”命令。所以我建议你可能想看看你项目的一些插件是否也有更新。也许更好的方法是更新插件,因为 Gradle 想要弃用“编译”命令
r
radekpakula

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


W
WebComer

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

“运行你的测试”。

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


T
ToDo

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

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


J
Jangli_coder

在 Intellij 中按照以下步骤操作(带有屏幕截图以便更好地理解):

转到文件-> 项目结构

https://i.stack.imgur.com/QKQfY.jpg

导航到模块,现在选择您的 Junit 测试文件所在的模块,然后选择“使用模块编译输出路径”单选按钮。提及相应的类文件夹路径,类似于随附的屏幕截图。

https://i.stack.imgur.com/xpZDP.jpg

申请就好了。这对我有用!


A
Alexander Klimetschek

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