Eclipse中出现“未找到JUnit测试”

54
我对JUnit还不熟悉,但我们必须在作业中使用它。我们的教授给了我们一个项目,其中有一个测试类BallTest.java。当我右键单击并选择“运行为”>“JUnit测试”时,弹出一个错误提示框,显示“未找到JUnit测试”。我知道这里已经有人回答过这个问题(No tests found with test runner 'JUnit 4'),但关闭Eclipse、重新启动、清理和构建似乎都不起作用。下面是我运行配置、构建路径和要测试的类的截图。
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());  
}

}

你不需要扩展TestCase吗? - iberbeu
2
@iberbeu 不适用于JUnit 4 - 它是基于注释的。 - Thorn G
3
创建一个“main”类来执行测试的意义在哪里?无论何时失败/成功,您都会获得所有这些信息。 - Jeroen Vannevel
@JeroenVannevel 我也对此感到困惑,我不确定为什么它存在于那里。这个类不是我写的,而是由别人提供给我的。 - iaacp
我偶尔会看到这个。我在这里添加了我的解决方案:https://dev59.com/6nE95IYBdhLWcg3wY85l#25976987 - theINtoy
23个回答

71

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

所有的源文件夹,包括测试类,都需要在Eclipse Java构建路径中。这样,主要和测试类等源代码就可以编译到构建目录中(Eclipse默认目录是bin)。


6
如果你没有名为“test”的文件夹作为源文件夹,那么Eclipse将不会在那里寻找代码。 - iberbeu
如果这个方法没有解决问题,你可以尝试重启Eclipse,就像@khylo的回答所说的那样。 - Rajith Gun Hewage

16
如果其他答案都不适用于您,以下是对我有效的方法。
重新启动eclipse 我正确地配置了源文件夹和正确注释的单元测试,但对于一个项目仍然出现了“找不到JUnit测试”的问题。 重新启动后就可以运行了。 我使用的是基于eclipse Luna 4.4.1的STS 3.6.2。

  1. 在src文件夹下,默认情况下应该存在main和test文件夹。如果没有,请创建一个test文件夹,然后编写测试用例/测试套件。
  2. 创建用例/套件后,转到Debug或Run配置,并在Test菜单下添加JUnit测试用例(如果找不到,请将JUnit添加到构建路径中)。
  3. 然后按照khylo的建议,重新启动eclipse。
祝愉快的测试。
- Arunchunaivendan

9

右键点击 -> 构建路径 -> 从构建路径中删除,然后再次添加 -> 右键单击名为“Test”的文件夹 > 构建路径 > 用作源文件夹。


1
那搞乱了我的构建路径。 - Rasshu

8
我遇到了同样的问题,解决方法如下: 我删除了@Test注释并重新输入。 它就可以正常工作了,我不知道为什么。

感谢这个疯狂的解决方案,:D 它像魔法一样运作,呵呵呵 - NIKHIL CHAURASIA
你真是个天才!谢谢! - Paul Marcelin Bejan

4

看起来你的测试类缺少“runner definition”,这可能是问题的原因:

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

我以前不知道Juni4的运行别名。我一直都是明确地提到运行类的名称。 - dkatzel
你是指JUnit4的包前缀导入吗?如果是这样,我知道你的意思,如果JUnit4的唯一引用在注释中,Eclipse不会自动为你导入该包。如果你像我一样有很多测试类,这很快就会变得乏味 :) - Klazen108
2
我本以为这就是解决方法,但遗憾的是我仍然得到相同的错误。 - iaacp
当您将测试作为应用程序运行(即主方法),它是否执行测试?如果是,则这是一个Eclipse配置问题。否则,可能是代码的某些问题。请告诉我们是否有效。 - Klazen108

4

junit4 要求测试类名的后缀应该使用 Test


3
  1. 右键单击项目->属性->Java Build Path,进入 Source 选项卡,然后添加测试源代码文件夹。
  2. 选择项目菜单,并取消选择“自动构建”选项(如果已选择)。
  3. 选择清理选项,然后选择“自动构建”选项。
  4. 重启 Eclipse 并运行您的 JUnit。

2

在我将测试方法的名称更改之前,任何解决方案对我都没有用。当测试方法的名称以“test”开头时是可以的。 我是Android编程的新手,这对我来说是一个大惊喜。


2

我认为您已经将测试类创建在src文件夹之外。您可以通过以下两种方式解决上述问题:

  1. java build path->source中添加您的包名称

  2. 将您的package/class移动到src文件夹中

我也遇到了同样的问题,并以这种方式解决,两种解决方案都很好用。


2

试试这个

右键点击单元测试类,

  1. 选择“运行为” -> 运行配置
  2. 在“测试”选项卡中,确保在“测试运行器”字段中选择下拉框“JUnit 4”
  3. 点击“应用”

现在运行测试!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接