2016-08-19 99 views
0

我有一个static方法添加类SourceClass,我想重写JUnit测试中的add方法的功能。 示例:如何重写Junit测试中的静态方法?

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

此SourceClass没有任何构造函数。 JUnit类:

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

当我使用@Override,它不工作。 有人可以建议我,我们怎么能做到这一点?

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

+0

您正在使用哪个版本的java? – ByeBye

+1

如果不扩展类,则无法覆盖方法。据我了解你的财物,你要男人你想嘲笑这种方法 – Jens

+3

覆盖在这种情况下没有意义。你究竟在努力完成什么? – Gray

回答

0

为什么你需要?静态方法应该直接使用。另外,对于静态方法,您不需要创建对象。作为add方法是受保护的,我想你是对源你下面的测试相同的封装结构,

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

您可以覆盖一个静态方法,但是你不会有RTTI它。所以,你不会从重写中获得很多好处。

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