我正在使用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()
应该在父类中执行一次)。我的设计有问题吗?
答案 0 :(得分:1)
我会保留您的父类以用于常见的测试实用程序和设置,并将testThat
移动到单独的测试类。
如果您只希望它运行一次,如果您在单独运行时在两个测试类中都需要它,那么如果您定义了运行所有测试的测试套件,则可以显式跳过它,并且只保留它父母测试。
答案 1 :(得分:0)
在我看来,你的设计确实存在问题。即使我们可以消除在父级中调用testThat(),如果你声明另一个孩子,你仍然会有两次相同的测试。我觉得这里的遗产是非常不必要的。为什么你真的想扩展另一个测试类? 我有时会在测试类上继承,但在父类中没有实际的测试实现(抽象测试虽然没问题)。