![](/img/trans.png)
[英]How do I use Powermockito to mock the construction of new objects when testing a method in an anonymous class?
[英]How do I mock Authentication objects in PowerMockito?
請注意,這是一個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。*”。 有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.