我在以下集成测试中遇到问题
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
@SpringBootTest
@ActiveProfiles("test")
@TestMethodOrder(OrderAnnotation.class)
public class FooServiceIT {
@Test
@Order(1)
void testUploadSuccess() { ... }
@Test
@Order(2)
void testDownloadSuccess() { ... }
@Test
@Order(3)
void testDeleteSuccess() { ... }
}
当我运行测试时,我希望执行顺序是1、2、3,但由于某种原因,实际执行顺序是2、3、1。
顺便说一句,我不知道为什么注解不工作。我使用的是Sping Boot 2.1.3和JUnit 5.4。
9条答案
按热度按时间smtd7mpg1#
您需要正确配置IDE。
要求
不要使用提供IDE的JUnit 5。如果将其添加为库,您将获得:
因此,只需包含所提到的依赖项,您的代码就会按预期工作:
JUnit结果:
hwazgwia2#
我也面临过同样的问题。但是,我发现问题到底出在哪里。错误地导入了“订单”类。
错了
右边的
另外,请验证以下五个类是否正确导入
hiz5n14c3#
来自文件https://junit.org/junit5/docs/current/api/org/junit/jupiter/api/TestMethodOrder.html
vdgimpew4#
如果您有JUnit 4,请检查注解
@Test
的导入:import org.junit.Test;
对于JUnit 5,导入应为:
import org.junit.jupiter.api.Test;
这个问题是我的问题
nfg76nw05#
你需要正确配置你的pom. xml.查看我的:
现在,您的Junit5注解必须正常工作
dzhpxtsq6#
在应用了基于以前推荐的解决方案的所有设置后。我仍然有相同的反向或随机**@顺序**执行。
聚合物.xml
Maven依赖关系树:
J单元测试:
输出:
izj3ouym7#
同样的问题。
对于我的例子,首先是@Test注解,应该是
org.junit.jupiter.api.Test
,而不是org.junit.Test
。其次,我在测试类的头部添加了
@RunWith(SpringRunner.class)
,删除它之后,测试用例的运行顺序与预期一致。ipakzgxi8#
请确保从org.junit.jupiter.API而不是org.junit导入库
代码来源:https://junit.org/junit5/docs/current/user-guide/#writing-tests-test-execution-order-methods
qeeaahzv9#
例如,通过使用Sping Boot ,您可以使用**@FixMethodOrder(MethodSorters.JVM)代替@TestMethodOrder(MethodOrderer.OrderAnnotation.class)**。所有测试都将按其显示的顺序运行。
订单执行为: