Java 如何在Junit测试中重写静态方法?
我在类Java 如何在Junit测试中重写静态方法?,java,junit,Java,Junit,我在类SourceClass中有一个static方法add,我想在JUnit测试中重写add方法的功能。 例如: 此SourceClass没有任何构造函数。 Junit类: public class TestClass { public void addTest() { //Trying to Override the add method here. } } 当我使用@Override时,它不起作用。 有人能建议我,我们怎样才能做到这一点 注意:我不应该在测试类中使用@Pr
SourceClass
中有一个static
方法add,我想在JUnit测试中重写add方法的功能。
例如:
此SourceClass没有任何构造函数。
Junit类:
public class TestClass
{
public void addTest()
{
//Trying to Override the add method here.
}
}
当我使用@Override
时,它不起作用。
有人能建议我,我们怎样才能做到这一点
注意:我不应该在测试类中使用
@PrepareForTest
。为什么需要?静态方法应该直接使用。另外,对于静态方法,您不需要创建对象。由于add方法是受保护的,我假设您在测试中遵循与在源代码中相同的包结构
public class TestClass
{
@Test
public void addTest()
{
assertEquals(SourceClass.add(2,5),7);
}
}
您可以重写静态方法,但它没有RTTI。因此,您不会从覆盖中获得太多好处
但是,正如有人在评论中所说,只有在扩展包含方法的类时,才能重写该方法。您使用的是哪一版本的java?如果不扩展类,就不能重写方法。据我所知,你们这些想嘲弄这种方法的人,在这种情况下,重写是没有意义的。您实际上想实现什么?可能是因为该静态方法正在使用数据库之类的资源。@leroneb不太可能,除非所有内容都声明为静态。或者,连接池/资源实例作为参数传递。
public class TestClass
{
@Test
public void addTest()
{
assertEquals(SourceClass.add(2,5),7);
}
}