我在类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
。
答案 0 :(得分:0)
为什么需要?静态方法应该直接使用。此外,对于静态方法,您不需要创建对象。由于添加方法受到保护,我假设您正在使用相同的包结构进行测试,因为您需要来源,
public class TestClass
{
@Test
public void addTest()
{
assertEquals(SourceClass.add(2,5),7);
}
}
答案 1 :(得分:0)
您可以覆盖静态方法,但您不会拥有RTTI。所以,你不会从覆盖中获得很多好处。
但是,正如有人在评论中所说,当你扩展包含它的类时,你只会覆盖一个方法。