如何在Junit测试中覆盖静态方法?

时间:2016-08-19 13:14:15

标签: java junit

我在类static中添加了SourceClass方法,我想在JUnit测试中覆盖add方法的功能。 例如:

public class SourceClass {
   protected static int add(int a, int b){
      //Do something
   }
}

这个SourceClass没有任何构造函数。 Junit CLASS:

public class TestClass
{
 public void addTest()
  {
    //Trying to Override the add method here.
  }
}

当我使用@Override时,它无效。 有人可以建议我,我们怎样才能做到这一点?

注意:我不应在测试类中使用@PrepareForTest

2 个答案:

答案 0 :(得分:0)

为什么需要?静态方法应该直接使用。此外,对于静态方法,您不需要创建对象。由于添加方法受到保护,我假设您正在使用相同的包结构进行测试,因为您需要来源,

public class TestClass
{
 @Test
 public void addTest()
  {
    assertEquals(SourceClass.add(2,5),7);
  }
}

答案 1 :(得分:0)

您可以覆盖静态方法,但您不会拥有RTTI。所以,你不会从覆盖中获得很多好处。

但是,正如有人在评论中所说,当你扩展包含它的类时,你只会覆盖一个方法。

相关问题