我有两个班级:
public abstract class AbstractFoobar { ... }
和
public class ConcreteFoobar extends AbstractFoobar { ... }
我对这两个类有相应的测试类:
public class AbstractFoobarTest { ... }
和
public class ConcreteFoobarTest extends AbstractFoobarTest { ... }
当我运行ConcreteFoobarTest(在JUnit中)时,AbstractFoobarTest中带注释的@Test方法与直接在ConcreteFoobarTest上声明的方法一起运行,因为它们是继承的。
有没有跳过它们?
答案 0 :(得分:1)
更新:误解了问题
AbstractFoobarTest
抽象化。
那样的测试方法
AbstractFoobarTest
只会运行
曾经,ConcreteFoobarTest
时
执行。你需要一个
具体的子类来测试
无论如何,AbstractFoobar
中的方法。AbstractFoobartest
和之间
ConcreteFoobarTest
。你不想要
无论如何要使用它。答案 1 :(得分:1)
首先你真的不需要AbstractFoobarTest
因为毕竟你不能创建抽象类的实例,所以,你仍然会依赖你的具体类来测试你的抽象类。 / p>
这意味着,您最终将使用ConcreteFoobarTest
来测试抽象类中的API。因此,你将拥有这个: -
public class ConcreteFoobarTest { ...
@Test
public void testOne() {
ConcreteFoobar cf = new ConcreteFoobar();
// assert cf.conreteAPI();
}
@Test
public void testTwo() {
ConcreteFoobar cf = new ConcreteFoobar();
// assert cf.abstractClassAPI();
}
}
答案 2 :(得分:0)
使用过程标签可以让您遇到特定的代码主体