Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Junit测试中重写静态方法?_Java_Junit - Fatal编程技术网

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);
  }
}