PowerMock 报错java.lang.LinkageError

在写项目测试案例的时候 报错:
java.lang.LinkageError: loader constraint violation: loader (instance of org/powermock/core/classloeader/javassist/JavassistMockCLassLoader) previously initiated loading for a different type with name “javax/security/auth/Subject”


java.lang.LinkageError: loader constraint violation: loader (instance of org/powermock/core/classloeader/javassist/JavassistMockCLassLoader) 
previously initiated loading for a different type with name “javax/security/auth/Subject”

这个解决办法就是,加一下这个东西

@PowerMockIgnore({“javax.security.*”})

问题解决~

PowerMock是一个扩展了EasyMock和Mockito的工具,它允许用户mock静态方法、私有方法、构造函数以及final类。在PowerMock中,mock this方法可以通过使用其提供的注解或者API来实现。 1. 首先,确保你的项目中已经添加了PowerMock的依赖库。 2. 使用`@PrepareForTest`注解来标注你的测试类,这个注解指定了PowerMock需要准备的类,对于静态方法的mock,通常需要包含包含静态方法的类。 3. 在测试方法中,使用`PowerMock.mockStatic(Class<?> ... classes)`或`PowerMock.mockStaticPartial(Class<?> clazz, String ... methods)`来对特定的类或方法进行mock。 4. 使用`when(...).thenReturn(...)`链式调用来定义方法的返回值或行为。 5. 如果需要对this方法进行mock,可以对`Class`对象使用`PowerMock.expect(...).andReturn(...)`来模拟返回值。 这里是一个简单的例子来展示如何使用PowerMock来mock一个静态方法: ```java import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) @PrepareForTest({MyClass.class}) public class MyTest { @Test public void testStaticMethod() { PowerMock.mockStatic(MyClass.class); PowerMock.expect(MyClass.staticMethod("test")).andReturn("mocked result"); PowerMock.replay(MyClass.class); String result = MyClass.staticMethod("test"); Assert.assertEquals("mocked result", result); PowerMock.verify(MyClass.class); } } class MyClass { public static String staticMethod(String input) { return input; } } ``` 在上述例子中,`MyClass`的静态方法`staticMethod`被mock了,返回了一个"mocked result"字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值