2017-08-15 98 views
1

我想寫一些使用PowerMock/PowerMockito的測試,但由於某種原因,當我嘗試在該類中運行測試時,我不斷收到我的Test類的ClassNotFoundException。這裏是我的app.gradle powerMockito聲明:使用PowerMock的Cla​​ssNotFoundException - 安卓Junit

androidTestCompile 'org.powermock:powermock:1.6.6' 
androidTestCompile 'org.powermock:powermock-module-junit4:1.6.6' 
androidTestCompile 'org.powermock:powermock-api-mockito:1.6.6' 

這裏是我的測試類的開始:

@RunWith(PowerMockRunner.class) 
@PrepareForTest(SettingsView.class) 
public class SettingsTests { 

    private SettingsView view; 

...

這裏是我收到的堆棧跟蹤:

java.lang.ClassNotFoundException: com.app.SettingsTests 
at java.lang.Class.classForName(Native Method) 
at java.lang.Class.forName(Class.java:400) 
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:161) 
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:48) 
at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:111) 
at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.<init>(JUnit4TestSuiteChunkerImpl.java:71) 
at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.<init>(AbstractCommonPowerMockRunner.java:32) 
at org.powermock.modules.junit4.PowerMockRunner.<init>(PowerMockRunner.java:34) 
at java.lang.reflect.Constructor.newInstance0(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:430) 
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) 
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) 
at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.runnerForClass(AndroidAnnotatedBuilder.java:77) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
at org.junit.runner.Computer.getRunner(Computer.java:40) 
at org.junit.runner.Computer$1.runnerForClass(Computer.java:31) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:101) 
at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:87) 
at org.junit.runners.Suite.<init>(Suite.java:81) 
at org.junit.runner.Computer.getSuite(Computer.java:28) 
at android.support.test.internal.runner.TestRequestBuilder.classes(TestRequestBuilder.java:789) 
at android.support.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:753) 
at android.support.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:354) 
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:260) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1932) 
Caused by: java.lang.IllegalStateException: Failed to transform class with name com.app.SettingsTests. Reason: com.app.SettingsTests 
at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:284) 
at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:192) 
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass1(DeferSupportingClassLoader.java:77) 
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:67) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:312) 
... 27 more 
Caused by: javassist.NotFoundException: com.app.SettingsTests 
at javassist.ClassPool.get(ClassPool.java:452) 
at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:262) 
... 31 more 

有誰知道什麼可能會導致此? Junit版本是4.12

回答

0

我不確定這是否適用於android。我在我的web項目上有類似的問題,並且覆蓋了javaassist依賴關係。試一試。

testCompile group: 'org.javassist', name: 'javassist', version: '3.18.2-GA' 
+0

沒有,沒有工作。 – hermt2

+0

我還沒有用過android。找到了這一個。可能對你有幫助。 https://github.com/powermock/powermock/issues/776 – want2learn