gpt4 book ai didi

java - 如何在 PowerMockito 中模拟身份验证对象?

转载 作者:搜寻专家 更新时间:2023-10-31 19:52:01 24 4
gpt4 key购买 nike

请注意,这是一个 UNIT 测试,而不是集成测试,所以我不想要任何 Spring,实际上所有可以模拟的东西都应该是。

这段代码:

@RunWith(PowerMockRunner.class)
@PrepareForTest({...})
@PowerMockIgnore({
"com.sun.crypto.*",
"javax.crypto.*",
"javax.management.*"})
public class TestClass {
...


@Test
public void testMethod (
Authentication mockAuthentication = Mockito
.mock(Authentication.class);
)
}

...抛出这个异常:

java.lang.LinkageError: loader constraint violation: loader (instance of org/powermock/core/classloader/MockClassLoader) previously initiated loading for a different type with name "javax/security/auth/Subject"

at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at org.powermock.core.classloader.MockClassLoader.loadUnmockedClass(MockClassLoader.java:262)
at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:206)
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass1(DeferSupportingClassLoader.java:89)
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:79)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.springframework.security.authentication.TestingAuthenticationToken$MockitoMock$2107019845.<clinit>(Unknown Source)
at sun.reflect.GeneratedSerializationConstructorAccessor27.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:48)
at org.objenesis.ObjenesisBase.newInstance(ObjenesisBase.java:73)
at org.mockito.internal.creation.instance.ObjenesisInstantiator.newInstance(ObjenesisInstantiator.java:18)
at org.mockito.internal.creation.bytebuddy.SubclassByteBuddyMockMaker.createMock(SubclassByteBuddyMockMaker.java:47)
at org.powermock.api.mockito.mockmaker.PowerMockMaker.createMock(PowerMockMaker.java:50)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:35)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:63)
at org.mockito.Mockito.mock(Mockito.java:1729)
at org.mockito.Mockito.mock(Mockito.java:1642)

线索?我一直在尝试 StackOverflow 的各种方法,但还没有找到解决方案。PowerMockito 肯定使用这个类来发挥它的魔力,所以也许这是由 PowerMockito 加载的并且无法更改?

最佳答案

在这种情况下,属于javax.security 的类不会加载,因此您应该忽略@PowerMockIgnore 中的“javax.security.*”。它有效。

关于java - 如何在 PowerMockito 中模拟身份验证对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50992501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com