मैं अपने एंड्रॉइड ऐप (उदाहरण के लिए ब्लूटूथ सॉकेट) का परीक्षण करने में उपयोग की जाने वाली कुछ कक्षाओं को मॉक करने के लिए पावरमैक का उपयोग करने की कोशिश कर रहा हूं।Android पर PowerMock के साथ VerifyError
मैंने पावरमैक के Google कोड पेज पर सभी निर्भरताओं के साथ ज़िप फ़ाइल डाउनलोड की है और उन्हें अपने एंड्रॉइड टेस्ट प्रोजेक्ट (बिल्ड पथ सहित) में जोड़ा है।
लेकिन जब मैं इस तरह PowerMock इस्तेमाल करने की कोशिश:
@RunWith(PowerMockRunner.class)
@PrepareForTest(NetworkUtil.class)
public class TestSendAck extends TestCase{
@Test
public void testGenerateURL() {
PowerMock.mockStatic(NetworkUtil.class);
EasyMock.expect(NetworkUtil.getLocalHostname()).andReturn("triumph");
PowerMock.replayAll();
PowerMock.verifyAll();
}
}
मैं निम्नलिखित स्टैक ट्रेस:
java.lang.ExceptionInInitializerError
at org.easymock.internal.ClassProxyFactory.createEnhancer(ClassProxyFactory.java:249)
at org.easymock.internal.ClassProxyFactory.createProxy(ClassProxyFactory.java:159)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:59)
at org.powermock.api.easymock.PowerMock.doCreateMock(PowerMock.java:2212)
at org.powermock.api.easymock.PowerMock.doMock(PowerMock.java:2163)
at org.powermock.api.easymock.PowerMock.mockStatic(PowerMock.java:287)
at se.metrima.mafield.test.TestSendAck.testGenerateURL(TestSendAck.java:19)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)
Caused by: java.lang.VerifyError: net.sf.cglib.core.ReflectUtils
at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:166)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
... 19 more
मैं केवल इस त्रुटि जब एक Android JUnit टेस्ट के रूप में परीक्षण परियोजना चलाने के , अगर मैं इसे नियमित जुनीट टेस्ट पावरमॉक काम के रूप में चलाता हूं, लेकिन फिर मेरे सभी परीक्षणों को एंड्रॉइड फ्रेमवर्क की आवश्यकता होती है, जो स्वाभाविक रूप से विफल हो जाती हैं।
मैं इसे कैसे हल कर सकता हूं? मैं यूनिट परीक्षण के लिए बहुत नया हूं इसलिए मैं अभी तक सभी अवधारणाओं को समझ नहीं पा रहा हूं।
क्या आपने इसे हल किया है? –