我正在使用Eclipse Oxygen.3 Release(4.7.3)。以下是我的JUnit测试类:
import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
class MyMathTest {
MyMath myMath = new MyMath();
@Before
public void before() {
System.out.println("Before");
}
@After
public void after() {
System.out.println("After");
}
@Test
public void testSum_with3numbers() {
System.out.println("Test1");
int result = myMath.sum(new int[] {1,2,3});
int expected = 6;
assertEquals(expected, result);
}
@Test
public void testSum_with1numbers() {
System.out.println("Test2");
int result = myMath.sum(new int[] {3});
int expected = 3;
assertEquals(expected, result);
}
@BeforeClass
public static void beforeClass() {
System.out.println("Before class");
}
@AfterClass
public static void afterClass() {
System.out.println("After class");
}
}
当我运行这个Junit测试时,eclipse不断弹出对话框,告诉"没有测试跑步者和JUnit 5'" 的测试结果。为什么呢?
答案 0 :(得分:5)
您的测试类目前基于JUnit 4,因为它使用org.junit
包中的注释。
因此,要使其在Eclipse中作为JUnit 4测试类运行,您需要在“运行配置”中选择JUnit 4 Runner。单击绿色圆圈旁边的小箭头(指向下方),其中有一个白色箭头(位于Eclipse IDE的顶部)。在那里你应该看到你的测试类,并选择你可以在JUnit 4和JUnit 5跑步者之间切换。
另一方面,如果您的目标是使用JUnit Jupiter编写测试(即JUnit 5的编程模型),则需要从org.junit
中的注释切换到org.junit.jupiter.api
答案 1 :(得分:1)
在Eclipse 2019-09(4.13)中,存在一个错误,该错误会导致“找不到使用测试运行器'JUnit 5'的测试”错误: https://bugs.eclipse.org/bugs/show_bug.cgi?id=551298
我在项目中添加了以下依赖项,它对我有用:
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-commons</artifactId>
<version>1.5.2</version><!--$NO-MVN-MAN-VER$-->
<scope>test</scope>
</dependency>
答案 2 :(得分:1)
这发生在我身上,因为我的测试方法被声明为私有,而JUnit无法检测到它。在我将其公开后,它可以正常工作,当然使用@Test批注。
答案 3 :(得分:1)
测试类不是公开的,应该公开,并且应该可以工作
答案 4 :(得分:1)
右键单击Java文件,然后选择:
构建路径->配置构建路径-> Java构建路径。
在Java构建路径中选择选项卡库,在右侧选项卡上选择添加库。
选择 JUnit ,然后单击下一步。
在 JUnit库版本下拉列表中选择 JUnit 5 ,然后单击完成。
现在使用 Junit Test 运行测试,它将起作用。
此程序对我有用。
答案 5 :(得分:0)
您正在使用具有JUnit 5依赖项的JUnit 4批注。
如果要使用JUnit 5,则应替换:
“ @Before”和“ @BeforeEach”
“ @AfterEach”和“ @AfterEach”
“ @BeforeAll”和“ @BeforeAll”
'@AfterAll'与'@AfterAll'
有关JUnit 5注释https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations/
的更多信息答案 6 :(得分:0)
回头看看您的导入。
您导入了import org.junit.Test;
(用于JUnit 4的运行测试用例)
您需要导入import org.junit.jupiter.api.Test;
才能使用JUnit5进行大写测试。
答案 7 :(得分:0)
在尝试了所有方法之后,我遇到了同样的错误,我意识到没有添加JUnit库。因此,添加后,测试可以按预期进行。
答案 8 :(得分:0)
答案 9 :(得分:0)
我的2美分:
右键单击项目->配置->添加模块信息->给出一些随机名称。 它应该自动在JUnit包中添加需求,如果没有,则手动添加:
requires org.junit.jupiter.api;
它将神奇地起作用!
*在Eclipse 2018-12上进行了测试
答案 10 :(得分:0)
我的问题是,运行正常,调试会引发此错误。
我之所以得到这个仅仅是因为系统内存不足。理想情况下,由于系统内存不足,eclipse无法启动调试会话。引发的错误消息令人困惑。
希望它对某人有帮助!
答案 11 :(得分:0)
在我目前的情况下,我在服务提供商一侧测试契约验证时遇到了此错误。由于Pact Broker没有针对服务提供商进行测试的契约而引发了该错误。
访问条约经纪人,并确保至少有一个条约可供测试。
答案 12 :(得分:0)
我在Eclipse(2020-09)非Maven项目中遇到了同样的问题。所提出的解决方案均无效,但是将编译器从9.0.4更改为15.0.1可以。
答案 13 :(得分:0)
添加 JUnit 老式依赖项为我解决了这个问题。
https://junit.org/junit5/docs/current/user-guide/#migrating-from-junit4-running
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
</dependency>