【问题标题】:How To Avoid Before And After Annotation In junitjunit中如何避免注解前后
【发布时间】:2017-03-16 04:56:07
【问题描述】:

我创建了一个带有前后注释的 Junit 类父级。 由于我无权更改父级,而且我也必须仅扩展该类。我想避免在我的某些子类测试用例中使用之前和之后。

Parent.class 在 JAR1 中

public class Parent {
@Before
public void RunBefore_EveryTestCase()
{}
@After
public void RunAfter_EveryTestCase()
{}    

child.class 在 JAR2 中

import Parent;
public class Child extends Parent{
@Test1        
 /////////////////I DONT Want to Run Before and After inherit From Parent
public void RunBefore_EveryTestCase()
{}

【问题讨论】:

  • 请仔细检查您的示例。目前,这两个类都命名为Parent,并且没有继承。
  • 代码已编辑。
  • Parent 仍然未被引用,仅被导入。 Child 是否真的扩展了它? @Test1 是什么?总的来说,我建议你创建一个MCVE
  • 我已经做出改变了

标签: java junit


【解决方案1】:

如果您在 Child 中扩展 Parent 类并且不想在您的孩子中执行 @Before 和 @After 的实现,只需覆盖这些方法并使用 @Before 和 @After 注释并提供一个空实现并且不要调用超级方法。这应该可以解决您不执行父实现的问题。

这是父类

public class Parent {
   @Before
   public void before(){
       System.out.println("Parent Before");
   }

   @After
   public void after(){
       System.out.println("Parent After");
   } 
}

这是子类

public class Child extends Parent {
   @Before
   public void before(){
       System.out.println("Child Before");
   }

   @After
   public void after(){
       System.out.println("Child After");
   }

   @Test
   public void test(){
       System.out.println("Running Test");
   }
}

输出:

Child Before
Running Test
Child After

因此,如果您在 Child 类中有一个空的 before 和 after 方法实现,那么它将只打印 Running Test

【讨论】:

  • 嗨,根据下面的链接,它对我不起作用。你能建议另一种方法来做到这一点。 [stackoverflow.com/questions/6076599/…
  • 添加了被测试的代码。有用。如果您仍有任何问题,请回复评论。
猜你喜欢
  • 2019-01-15
  • 1970-01-01
  • 2023-01-26
  • 2021-06-16
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
相关资源
最近更新 更多