Java 使用PowerMock模拟来自多个类的静态方法
我知道如何使用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 {
但是我想使用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()在kotlin@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() {
}
}