gpt4 book ai didi

java - JUnit 的 @TestMethodOrder 注释不起作用

转载 作者:行者123 更新时间:2023-12-02 02:34:39 29 4
gpt4 key购买 nike

我在进行以下集成测试时遇到问题

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。

说实话,我不知道为什么注释不起作用。我正在使用 Spring Boot 2.1.3 和 JUnit 5.4。

最佳答案

您需要正确配置您的 IDE。

要求

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.4.0</version>
</dependency>

请勿使用为您的 IDE 提供的 JUnit 5。如果将其添加为库,您将得到:

No tests found for with test runner 'JUnit 5' 
==================== and this exception ===================
TestEngine with ID 'junit-vintage' failed to discover tests
java.lang.SecurityException: class "org.junit.jupiter.api.TestMethodOrder"'s signer information does not match signer information of other classes in the same package

因此,只需包含提到的依赖项,您的代码就会按您的预期工作:

import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class FooServiceIT {

@Test
@Order(1)
public void testUploadSuccess() {
System.out.println("1");
}

@Test
@Order(2)
public void testDownloadSuccess() {
System.out.println("2");
}

@Test
@Order(3)
public void testDeleteSuccess() {
System.out.println("3");
}
}

JUnit 结果:

1
2
3

关于java - JUnit 的 @TestMethodOrder 注释不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54947645/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com