在Eclipse中“没有发现JUnit测试”

时间:2013-11-18 20:58:55

标签: java eclipse unit-testing junit

所以我是JUnit的新手,我们必须将它用于家庭作业。我们的教授给了我们一个有一个测试类BallTest.java的项目。当我右键单击>以>运行JUnit Test,我收到一个弹出错误,上面写着“没有找到JUnit测试”。我知道这个问题已在这里得到解答(No tests found with test runner 'JUnit 4'),但关闭日食,重新启动,清理和构建似乎不起作用。下面是我的运行配置,构建路径以及我要测试的类的屏幕截图。

Run Configuration Build Path

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());  
}

}

23 个答案:

答案 0 :(得分:63)

右键单击Project>属性> Java构建路径>将Test文件夹添加为源文件夹。

包括测试类在内的所有源文件夹都需要位于Eclipse Java Build Path中。这样可以将main和test类等源代码编译到构建目录中(Eclipse默认文件夹是bin)。

答案 1 :(得分:15)

如果其他答案都不适合你,那么这对我有用。

重启eclipse

我正确配置了源文件夹,并且单元测试正确注释但仍然没有找到"没有找到JUnit测试",对于一个项目。重新启动后它工作。我使用的是基于eclipse Luna 4.4.1的STS 3.6.2

答案 2 :(得分:9)

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

答案 3 :(得分:6)

我有同样的问题,并解决了这样的问题: 我删除了@Test注释并重新输入了它。 它刚刚起作用,我不明白为什么。

答案 4 :(得分:4)

看起来你错过了测试类中的跑步者定义,这可能是原因:

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

答案 5 :(得分:3)

  1. 右键单击您的项目 - > Properties-> Java Build Path并转到Source选项卡,然后添加您的test src文件夹。
  2. 选择项目菜单,如果选中
  3. ,则取消选中“自动构建”选项
  4. 选择“清理”,然后选择“自动构建”选项
  5. 重启Eclipse并运行junit。

答案 6 :(得分:2)

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

  1. git

  2. 中添加您的包名称
  3. 将您的http://myURL?price_rang=2%5E%5E99_5%5E%5E99 移至java build path->source文件夹

  4. 我遇到同样的问题并以这种方式解决了两种解决方案都运行良好。

答案 7 :(得分:2)

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

答案 8 :(得分:2)

在我更改测试方法的名称之前,任何解决方案都不适用于我。当测试方法的名称以" test"开头时没关系 我是android编程的新手,对我来说是个大惊喜。

答案 9 :(得分:1)

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

答案 10 :(得分:1)

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

答案 11 :(得分:0)

在新的 Eclipse 工作区中导入项目,这解决了我的问题。

答案 12 :(得分:0)

单击“运行”->选择您的JUnit->在“测试运行器”中,选择要用于运行的JUnit版本。

enter image description here

答案 13 :(得分:0)

有时,当您在模块路径中添加Junit库时会发生。因此,在此处删除它并添加Class路径。

答案 14 :(得分:0)

右键单击Project> Properties> Java Build Path> Libraries> 选择类路径->添加库-> Junit->选择junit版本->完成->应用程序

答案 15 :(得分:0)

有时候,如果有很多Test文件,那么由于classpath参数长度的限制,Eclipse无法为所有库和路径传递-classpath选项。 要解决它,请转到运行

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

至少它解决了我的问题。

答案 16 :(得分:0)

我在JUnit 5.4.2中也遇到了这个问题。我在gradle 5.3.1中使用Eclipse 2019-09。

所以我必须将这两个依赖项添加到具有正确配置的build.gradle文件中(testImplementation和testRuntimeOnly):

apply plugin: "java"

//enabled the Gradle’s native JUnit 5 support  
test {  
  useJUnitPlatform()  
}  
testImplementation  group: "org.junit.jupiter", name: "junit-jupiter-api", version: "${junitVer}"
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "${junitVer}"

答案 17 :(得分:0)

尝试一下

右键单击单元测试类,

  1. 选择“运行方式”->运行配置
  2. 在“测试”标签中,确保在“测试运行器”字段中选择下拉菜单“ JUnit 4”
  3. 点击“应用”

现在运行测试!

答案 18 :(得分:0)

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

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

答案 19 :(得分:0)

解决此问题的最佳方法是为Junit测试用例类名称添加public Access修饰符,然后通过右键单击Junit测试用例类并以Junit Test身份运行来运行方案。

答案 20 :(得分:0)

我使用的是$mime,但错过了在公共静态参数方法中添加@RunWith(Parameterized.class)注释。添加注释后,它有效。

答案 21 :(得分:0)

在跨Eclipse版本升级项目时遇到此问题。对于例如在Mars2.0中运行良好的junits没有在Neon上运行。以下对我有用。

  1. 删除.settings文件夹。将项目导入eclipse。
  2. 删除源文件夹。然后再次使用文件夹作为源文件夹。例如 - 从构建路径中删除src / main / java作为源文件夹。 - >好的 - >再次将此文件夹作为源文件夹。对main / resources,test / java,test / resources
  3. 重复一遍

答案 22 :(得分:0)

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

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

我会奇怪地补充一点 - 也许还有其他事情发生了 - 在我修复“Name”字段之前它似乎也不适合我,所以它只包含类名,就像其他JUnit运行配置一样