Java ';未找到JUnit测试';日蚀

Java ';未找到JUnit测试';日蚀,java,eclipse,unit-testing,junit,Java,Eclipse,Unit Testing,Junit,所以我是JUnit的新手,我们必须用它做家庭作业。我们的教授给了我们一个有一个测试类的项目,BallTest.java。当我右键单击>运行方式>JUnit测试时,会出现一个弹出错误,显示“未找到JUnit测试”。我知道这里已经回答了这个问题(),但是关闭eclipse、重新启动、清理和构建似乎不起作用。下面是我的运行配置、构建路径和我要测试的类的截图 BallTest.java import static org.junit.Assert.*; import junit.framework.

所以我是JUnit的新手,我们必须用它做家庭作业。我们的教授给了我们一个有一个测试类的项目,
BallTest.java
。当我右键单击>运行方式>JUnit测试时,会出现一个弹出错误,显示“未找到JUnit测试”。我知道这里已经回答了这个问题(),但是关闭eclipse、重新启动、清理和构建似乎不起作用。下面是我的运行配置、构建路径和我要测试的类的截图

BallTest.java

import static org.junit.Assert.*;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 

public class BallTest {

Ball ball;

/**
 * @throws java.lang.Exception
 */
@Before
public void setUp() throws Exception {
    System.out.println("Setting up ...");
    Point2D p = new Point2D(0,0);
    ball = new Ball(p);
}

/**
 * @throws java.lang.Exception
 */
@After
public void tearDown() throws Exception {
    System.out.println("Tearing down ...");
    ball = null;
}

/**
 * Test method for {@link Ball#getCoordinates()}.
 */
@Test
public void testGetCoordinates() {
    assertNotNull(ball); // don't need Assert. because of the import statement above.
    Assert.assertEquals(ball.getCoordinates().getX(), 0);
    Assert.assertEquals(ball.getCoordinates().getY(), 0);
}

/**
 * Test method for {@link Ball#setCoordinates(Point2D)}.
 */
@Test
public void testSetCoordinates() {
    Assert.assertNotNull(ball);
    Point2D p = new Point2D(99,99);
    ball.setCoordinates(p);
    Assert.assertEquals(ball.getCoordinates().getX(), 99);
    Assert.assertEquals(ball.getCoordinates().getY(), 99);
}

/**
 * Test method for {@link Ball#Ball(Point2D)}.
 */
@Test
public void testBall() {
    Point2D p = new Point2D(49,30);
    ball = new Ball(p);
    Assert.assertNotNull(ball);
    Assert.assertEquals(ball.getCoordinates().getX(), 49);
    Assert.assertEquals(ball.getCoordinates().getY(), 30);

    //fail("Not yet implemented");
}

public static void main (String[] args) {
         Result result = JUnitCore.runClasses(BallTest.class);
         for (Failure failure : result.getFailures()) { 
                System.out.println(failure.toString()); 
            } 
        System.out.println(result.wasSuccessful());  
}

}

看起来您缺少测试类中的runner定义,这可能是原因:

import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class BallTest {
...
}

右键单击项目>属性>Java构建路径>将测试文件夹添加为源文件夹


包括测试类在内的所有源文件夹都需要位于EclipseJava构建路径中。这样,诸如main和test类之类的源代码就可以编译到build目录中(Eclipse默认文件夹是bin)。

如果其他答案都不适用于您,那么下面是对我有用的

重新启动eclipse


我正确地配置了源文件夹,并正确地注释了单元测试,但对于一个项目,仍然得到“未找到JUnit测试”。重新启动后,它工作了。我使用的是基于eclipse Luna 4.4.1的STS 3.6.2,我遇到了同样的问题,解决方法如下: 我删除了@Test注释并重新键入。
它刚刚起作用,我不知道为什么。

右键单击->构建路径->从构建路径删除 然后再次添加->
右键单击名为“测试”>“生成路径”>“用作源文件夹”的文件夹。

测试类的运行配置可能会为该问题创建另一个原因(和解决方案)

如果您转到运行(或调试)配置(使用cmd-3或单击工具栏中的小下拉按钮),您可以看到为您使用过的每个测试类创建的配置。我发现我的一个不会启动的类有一个运行配置,其中testmethod字段不知何故被无意中填充了。我必须弄清楚这一点才能让它发挥作用。清除该选项后,将以浅色文本显示(所有方法)


奇怪的是,我要补充一点——可能还有其他原因——在我修复了“Name”字段之前,它似乎对我不起作用,因此它只包括类名,就像其他JUnit运行配置一样。

我通过配置构建路径解决了这个问题。 右键单击项目(或任何子文件夹)->生成路径->配置生成路径。打开属性窗口后,单击“源”选项卡并添加您的src和tst文件夹。 但这一点对我来说并不奏效。
奇怪的是,我不得不重新键入注释。(Project->clean或restart可能也能工作)。

在我更改测试方法的名称之前,任何解决方案都不适合我。当测试方法的名称以“test”开头时,表示OK。
我是android编程新手,这对我来说是个大惊喜。

我想你已经在src文件夹外创建了测试类。您可以通过两种方式解决上述问题:

  • java构建路径->源代码中添加包名

  • src
    文件夹中移动您的
    package/class


  • 我有同样的问题,并通过这种方式解决了这两个解决方案都很好地工作。

    在跨eclipse版本升级项目时遇到了这个问题。例如,在Mars2.0中运行良好的junits没有在Neon上运行。以下几点对我有用

  • 删除。设置文件夹。将项目导入eclipse
  • 删除源文件夹。然后再次将这些文件夹用作源文件夹。e、 g-将src/main/java作为源文件夹从构建路径中删除。->确定->再次将此文件夹设为源文件夹。对main/resources、test/java、test/resources重复此操作
  • 右键单击您的项目->属性->Java构建路径并转到源选项卡,然后添加您的测试src文件夹
  • 选择项目菜单并取消选择“自动生成”选项(如果选中)
  • 选择“清理”,然后选择“自动生成”选项
  • 重新启动Eclipse并运行junit

  • 我正在使用
    @RunWith(Parameterized.class)
    ,但没有在publicstaticparameters方法中添加
    @Parameters
    注释。添加注释后,它起作用。

    解决此问题的最佳方法是为Junit测试用例类名称添加公共访问修饰符,然后右键单击Junit测试用例类并作为Junit测试运行,从而运行该场景。

    解决方案是,在备份src/Test文件夹后,将其从文件系统中删除,然后再创建一次


    那是在我做了“从构建路径中删除”提示之后,它在STS 4中打开项目时破坏了文件夹。

    在Eclipse光子中,您可能需要将JUnit 4或5添加到构建路径中。右键单击@Test并选择“将junit4添加到构建路径”。

    junit4
    要求测试类名应使用
    Test
    作为后缀。

    试试这个

    右键单击单元测试类

  • 选择“运行方式”->运行配置
  • 在“测试”选项卡中,确保在“测试运行程序”字段中选择下拉列表“JUnit4”
  • 单击“应用”

  • 现在运行测试

    JUnit 5.4.2也有这个问题。我使用Eclipse 2019-09和gradle 5.3.1

    因此,我必须将这两个依赖项添加到build.gradle文件中,并对其进行正确的配置(testImplementation和testRuntimeOnly):


    有一段时间,如果有很多测试文件,那么由于classpath参数长度的限制,Eclipse无法通过所有LIB和path的classpath选项。 要解决它,请运行

    Configerations -> JUnit -> Your Project Config -> ClassPath -> Check "Use Temporary Jar Options"
    

    至少它解决了我的问题。

    右键单击项目>属性>Java构建路径>库>
    选择classpath->addlibrary->Junit->selectjunitversion->finish->applay

    有时,在模块路径中添加Junit库时会出现这种情况。因此,在那里删除它并添加类路径。

    单击“运行”->选择JUnit->in“测试运行程序”
    Configerations -> JUnit -> Your Project Config -> ClassPath -> Check "Use Temporary Jar Options"