gpt4 book ai didi

java - ArrayStoreException : sun. reflect.annotation.TypeNotPresentExceptionProxy 安卓 PowerMock JUnit

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:57:14 33 4
gpt4 key购买 nike

我正在使用 PowerMock 和 Mockito 来测试静态函数,如下所示。它过去一直运行良好,直到今天它抛出了下面提到的这个异常。

// this test case need to mock static methods so it uses PowerMock
@RunWith(PowerMockRunner.class)
// this static methods to be mocked are on Environment so that must be 'prepared'
@PrepareForTest({Environment.class, Build.class, Build.VERSION.class})
public class FileUtilityUnitTest {
//This uses the JUnit TemporaryFolder Rule to create
// (and discard on completion) a directory for the assertions.
@Rule
TemporaryFolder storageDirectory = new TemporaryFolder();
File nonExistentDirectory;
File existentDirectory;

@Before
public void setup(){
PowerMockito.mockStatic(Environment.class);
PowerMockito.mockStatic(Build.VERSION.class);
nonExistentDirectory = Mockito.mock(File.class);
//so the exists method tends to be false
when(nonExistentDirectory.exists()).thenReturn(false);
existentDirectory = storageDirectory.getRoot();
}

@Test
public void test_is_external_storage_writable(){
when(Environment.getExternalStorageState()).thenReturn(Environment.MEDIA_MOUNTED);
assertTrue("External storage mounted ", Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED);
}
}

堆栈跟踪如下。

    Internal Error occured.
java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:724)
at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:531)
at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:355)
at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:286)
at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
at java.lang.Class.createAnnotationData(Class.java:3521)
at java.lang.Class.annotationData(Class.java:3510)
at java.lang.Class.getAnnotation(Class.java:3415)
at com.intellij.junit4.JUnit4TestRunnerUtil.buildRequest(JUnit4TestRunnerUtil.java:150)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:93)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

任何人都可以分享一些关于这方面的信息。我一直在谷歌搜索,但找不到好的引用。提前致谢。

最佳答案

我今天遇到了同样的问题。我不确定发生了什么,但是通过更新 compileSdkVersionbuildToolsVersiontargetSdkVersion 来匹配 support-annotations 版本,问题消失了。

现在 build.gradle 看起来像:

android {
compileSdkVersion 27
buildToolsVersion "27.0.2"

defaultConfig {
...
targetSdkVersion 27
}
}

dependencies {
compile 'com.android.support:support-annotations:27.0.2'
androidTestCompile 'com.android.support:support-annotations:27.0.2'
}

我找不到太多关于它的评论,所以我希望我能帮助别人。

关于java - ArrayStoreException : sun. reflect.annotation.TypeNotPresentExceptionProxy 安卓 PowerMock JUnit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46738286/

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