Child Kotlin测试类运行所有父测试

时间:2017-09-05 10:58:43

标签: intellij-idea junit kotlin

我正在使用Kotlin和JUnit。我有一个父测试抽象类,它包含一些测试实现和一些抽象测试。

@Test
abstract fun testThis()

@Test
fun testThat() {
    assert(true)
}

在我的孩子课上,我实施了testThis()

@Test
override fun testThis() {
    assert(1 == 1)
}

在另一个子课程中,我有另一个实现:

@Test
override fun testThis() {
    assert(2 == 3)
}

但是,当我从IntelliJ运行所有测试时,我可以看到testThat()被调用两次,每个孩子一次。

如何阻止这种情况发生?我希望测试只运行一次,作为各自类的一部分(在这种情况下,testThat()应该在父类中执行一次)。我的设计有问题吗?

2 个答案:

答案 0 :(得分:1)

我会保留您的父类以用于常见的测试实用程序和设置,并将testThat移动到单独的测试类。

如果您只希望它运行一次,如果您在单独运行时在两个测试类中都需要它,那么如果您定义了运行所有测试的测试套件,则可以显式跳过它,并且只保留它父母测试。

答案 1 :(得分:0)

在我看来,你的设计确实存在问题。即使我们可以消除在父级中调用testThat(),如果你声明另一个孩子,你仍然会有两次相同的测试。我觉得这里的遗产是非常不必要的。为什么你真的想扩展另一个测试类? 我有时会在测试类上继承,但在父类中没有实际的测试实现(抽象测试虽然没问题)。