孩子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()应该在父类中执行一次)。 我的设计有问题吗?

我会保持你的父类为常见的测试工具和设置,并将testThat移动到一个单独的测试类。

如果你只想运行一次,如果你想在两个测试类中单独运行,那么你可以明确地跳过它,如果你定义一个测试套件来运行你所有的测试,并且只保留在父测试上。

在我看来,你的设计确实是有问题的。 即使我们可能会消除在父项中调用testThat(),但是如果声明另一个子项,那么无论如何都会有两次相同的测试。 我觉得这里的遗产很不起眼。 为什么你真的想扩展另一个测试类? 我有时在测试类上做继承,但在父类中没有实际的测试实现(虽然抽象测试是可以的)。