代码之家  ›  专栏  ›  技术社区  ›  Marcel Stör

JUnit 5毕竟没有在Kotlin上执行

  •  2
  • Marcel Stör  · 技术社区  · 6 年前

    如果我运行 SubClass 低于我预期的单位 @AfterAll 在测试后执行。然而,结果是:

    init in super class
    init in sub class
    test OK
    

    我不明白为什么 SuperClass#stop() 未调用。我明白 @毕竟 需要静态方法或 Lifecycle.PER_CLASS 但这是给的。

    超级阶级

    import org.junit.jupiter.api.AfterAll
    import org.junit.jupiter.api.TestInstance
    
    @TestInstance(TestInstance.Lifecycle.PER_CLASS)
    open class SuperClass {
    
        init {
            println("init in super class")
        }
    
        @AfterAll
        fun stop(){
            println("service stopped")
        }
    }
    

    子类

    import org.junit.Test
    
    open class SubClass : SuperClass() {
    
        init {
            println("init in sub class")
        }
    
        @Test
        fun shouldRun() {
            println("test OK")
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Roland    6 年前

    使用 org.junit.jupiter.api.Test 而不是 org.junit.Test 在JUnit5测试中(也检查 JUnit 5 User Guide - Annotations ).

    import org.junit.jupiter.api.Test
    
    open class SubClass : SuperClass() {
      init {
        println("init in sub class")
      }
    
      @Test
      fun shouldRun() {
        println("test OK")
      }
    }