【问题标题】:Does JUnit 5 support test method execution in alphabetical order or any similar functionality? [duplicate]JUnit 5 是否支持按字母顺序或任何类似功能执行测试方法? [复制]
【发布时间】:2018-04-27 13:23:45
【问题描述】:

JUnit 4 有@FixMethodOrder(MethodSorters.NAME_ASCENDING) 支持按字母顺序执行测试。

在最新的 JUnit 5 中是否引入了任何类似的功能或任何其他方式来实现这一点?

我浏览了一些similar issue,但找不到任何解决方案。 所以再次发布此问题以检查解决方案。

谢谢

【问题讨论】:

  • 每个测试都应该是独立的;既不依赖也不影响其他测试。
  • @DwB:你是对的。但是,如果您在开发系统上运行并在构建系统上失败,那么很难找出是哪个测试导致了问题。在每个构建系统上强制执行相同的顺序可以重现错误。
  • 失败的断言消息应该标识测试。
  • JUnit Jupiter 已经为每次测试运行强制执行一致的顺序。所以它在所有构建系统上已经是确定性的。只是你不能(还)提供“自定义订单”。
  • 这个逻辑可以在这里找到:github.com/junit-team/junit5/blob/…

标签: java junit5


【解决方案1】:

我知道我迟到了,但 JUnit5 能够做到。

import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.TestMethodOrder;
        
@TestMethodOrder(MethodOrderer.MethodName.class)
public class TestClass{
   //..
}

此 Annotation 是按实际方法名称排序的,而不是 Displayname。

【讨论】:

  • 谢谢,这应该是正确的答案。还有一些其他的排序机制,查看org.junit.jupiter.api.MethodOrderer
【解决方案2】:

终于,这成为了可能。
@TestMethodOrder 在快照版本中可用。 (5.4)

@TestMethodOrder(OrderAnnotation.class)
class OrderedTestsDemo {

    @Test
    @Order(1)
    void nullValues() {
        // perform assertions against null values
    }

    @Test
    @Order(2)
    void emptyValues() {
        // perform assertions against empty values
    }

    @Test
    @Order(3)
    void validValues() {
        // perform assertions against valid values
    }

}

来源:doccommit

【讨论】:

    【解决方案3】:

    JUnit 问题仍未解决https://github.com/junit-team/junit5/issues/13 所以,目前不存在这种可能性。

    【讨论】:

    【解决方案4】:

    不幸的是,目前 JUnit5 中没有用于命令执行测试的机制。

    【讨论】:

    • 当然可以,例如查看 org.junit.jupiter.api.MethodOrderer.Alphanumeric。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多