我刚开始读大学的计算机科学课程,我在使用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的最新版本。


当前回答

我有同样的问题,重建/无效缓存等不工作。似乎这只是Android Studio的一个bug……

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

./gradlew test

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

其他回答

如果您的测试文件夹已经作为一个单独的模块导入(项目视图中的文件夹图标上显示一个小正方形),这也可能发生。 通过在项目视图中选择测试文件夹并按DEL键来删除模块。 然后开始你的测试。 如果弹出对话框显示错误消息,说明没有选择模块,请从下拉菜单中指定根模块。

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

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

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

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

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

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