JUnit:有没有办法跳过属于Test类父级的测试?

时间:2011-02-11 15:19:55

标签: java unit-testing junit

我有两个班级:

public abstract class AbstractFoobar { ... }

public class ConcreteFoobar extends AbstractFoobar { ... }  


我对这两个类有相应的测试类:

public class AbstractFoobarTest { ... }

public class ConcreteFoobarTest extends AbstractFoobarTest { ... }


当我运行ConcreteFoobarTest(在JUnit中)时,AbstractFoobarTest中带注释的@Test方法与直接在ConcreteFoobarTest上声明的方法一起运行,因为它们是继承的。

有没有跳过它们?

3 个答案:

答案 0 :(得分:1)

更新:误解了问题

  1. 使AbstractFoobarTest抽象化。 那样的测试方法 AbstractFoobarTest只会运行 曾经,ConcreteFoobarTest时 执行。你需要一个 具体的子类来测试 无论如何,AbstractFoobar中的方法。
  2. 或者只是删除继承 介于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)

使用过程标签可以让您遇到特定的代码主体