Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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 使用PowerMock模拟来自多个类的静态方法_Java_Junit4_Powermock - Fatal编程技术网

Java 使用PowerMock模拟来自多个类的静态方法

Java 使用PowerMock模拟来自多个类的静态方法,java,junit4,powermock,Java,Junit4,Powermock,我知道如何使用PowerMock从类中模拟静态方法。 但是我想使用JUnit和PowerMock从测试类中的多个类模拟静态方法 谁能告诉我有没有可能做到这一点以及如何做到这一点呢?只需对多个类执行@PrepareForTest({Class1.class,Class2.class}) @Test @PrepareForTest({Class1.class, Class2.class}) public final void handleScript() throws Exception {

我知道如何使用PowerMock从类中模拟静态方法。
但是我想使用JUnit和PowerMock从测试类中的多个类模拟静态方法


谁能告诉我有没有可能做到这一点以及如何做到这一点呢?

只需对多个类执行
@PrepareForTest({Class1.class,Class2.class})

@Test
 @PrepareForTest({Class1.class, Class2.class})
 public final void handleScript() throws Exception {
    PowerMockito.mockStatic(Class1.class);
    PowerMockito.mockStatic(Class2.class);

等等。

在使用powermock/junit的java中,使用
@PrepareForTest({})
和数组(
{}
)一样多的静态类

我在scala/junit中使用了powermock,因为scalatest没有与powermock集成

@RunWith(classOf[PowerMockRunner])
@PrepareForTest(Array(classOf[XmlConverterA], classOf[XmlConverterB]))
class TransfersServiceExceptionSpec {

  @Test
  def test() {
  }
}

如果您使用的是kotlin,语法如下


@PrepareForTest(ClassA::class,ClassB::class)

您只需以模拟单个类中的方法的方式进行操作。在使用powermock时,需要将此注释添加到测试类@PrepareForTest(包含StaticMethod.class的类)中。但是我们不能指定多个注释。那怎么做呢?卷发牙套!这就是我所缺少的。也不要忘记在类上使用
@RunWith(PowerMockRunner.class)
切换到PowerMockRunnerlevel@NikitaBarishok并不总是需要。您可以定义一个规则来代替上述工作-
@rule public PowerMockRule rule=new PowerMockRule()@PrepareForTest(Class1::class,Class2::class))
中,使用
@PrepareOnlyThisForTest
而不是
@PrepareForTest
也更好。后者还修改了通常不需要的超类。至于
PowerMock 1.6.5
,在方法级别上使用
@PrepareForTest
存在问题(仅在类级别上对我有效)
@RunWith(classOf[PowerMockRunner])
@PrepareForTest(Array(classOf[XmlConverterA], classOf[XmlConverterB]))
class TransfersServiceExceptionSpec {

  @Test
  def test() {
  }
}