首页 > 解决方案 > 为本地开发设置 Mockito 时遇到问题

问题描述

我正在尝试设置 Mockito,以便我可以在大学课程中使用它,但我无法构建它。我相信我遇到的错误与最近的 PR #2024有关。这是我使用时的控制台输出gradlew build

.\mockito-release-3.x>gradlew build

> Configure project :
  Building version '3.5.14' (value loaded from 'version.properties' file).

> Task :animalsnifferMain FAILED

[Undefined reference (android-api-level-24-7.0_r2)] org.mockito.internal.creation.bytebuddy.(InlineByteBuddyMockMaker.java:507)
  >> java.lang.instrument.Instrumentation

[Undefined reference (android-api-level-24-7.0_r2)] org.mockito.internal.creation.bytebuddy.(InlineByteBuddyMockMaker.java:507)
  >> boolean java.lang.instrument.Instrumentation.isModifiableClass(Class)


> Task :osgi-test:test FAILED

org.mockito.osgitest.OsgiTest > initializationError FAILED
    java.lang.IllegalStateException at OsgiTest.java:76
        Caused by: org.osgi.framework.BundleException at OsgiTest.java:74

1 test completed, 1 failed

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':animalsnifferMain'.
> 2 AnimalSniffer violations were found in 1 files. See the report at: ./mockito-release-3.x/build/reports/animalsniffer/main.text

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
==============================================================================

2: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':osgi-test:test'.
> There were failing tests. See the report at: ./mockito-release-3.x/subprojects/osgi-test/build/reports/tests/test/index.html

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
==============================================================================

* Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.4.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 3s
171 actionable tasks: 39 executed, 132 up-to-date

以下是 的内容animalsniffer/main.txt

org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker:507  Undefined reference (android-api-level-24-7.0_r2): java.lang.instrument.Instrumentation
org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker:507  Undefined reference (android-api-level-24-7.0_r2): boolean java.lang.instrument.Instrumentation.isModifiableClass(Class)

以及测试索引文件的内容:

java.lang.IllegalStateException: Failed to start test bundle.
    at org.mockito.osgitest.OsgiTest.setUpClasses(OsgiTest.java:76)
    at org.mockito.osgitest.OsgiTest.<init>(OsgiTest.java:46)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:107)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:78)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
    at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
    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 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
    at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
    at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
    at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:118)
    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 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
    at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:413)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.osgi.framework.BundleException: Could not resolve module: testBundle [1]
  Unresolved requirement: Import-Package: org.mockito
    -> Export-Package: org.mockito; bundle-symbolic-name="org.mockito.mockito-core"; bundle-version="3.5.14"; version="3.5.14"; uses:="org.mockito.exceptions.misusing,org.mockito.invocation,org.mockito.listeners,org.mockito.mock,org.mockito.plugins,org.mockito.quality,org.mockito.session,org.mockito.stubbing,org.mockito.verification"
       org.mockito.mockito-core [3]
         Unresolved requirement: Import-Package: junit.framework; resolution:="optional"
         Unresolved requirement: Import-Package: org.junit.rules; resolution:="optional"
         Unresolved requirement: Import-Package: org.junit.runner; resolution:="optional"
         Unresolved requirement: Import-Package: org.junit.runner.manipulation; resolution:="optional"
         Unresolved requirement: Import-Package: org.junit.runner.notification; resolution:="optional"
         Unresolved requirement: Import-Package: org.junit.runners; resolution:="optional"
         Unresolved requirement: Import-Package: org.junit.runners.model; resolution:="optional"
         Unresolved requirement: Import-Package: org.hamcrest; resolution:="optional"
         Unresolved requirement: Import-Package: org.objenesis; version="[3.1.0,4.0.0)"
         Unresolved requirement: Import-Package: net.bytebuddy.implementation.bytecode; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.implementation.bytecode; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
              net.bytebuddy.byte-buddy [4]
                No resolution report for the bundle.         Unresolved requirement: Import-Package: net.bytebuddy.description.field; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.description.field; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.description.type; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.description.type; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.jar.asm; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.jar.asm; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.description; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.description; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.dynamic.scaffold; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.dynamic.scaffold; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.implementation.attribute; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.implementation.attribute; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.description.method; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.description.method; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.matcher; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.matcher; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.agent; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.agent; bundle-symbolic-name="net.bytebuddy.byte-buddy-agent"; bundle-version="1.10.15"; version="1.10.15"
              net.bytebuddy.byte-buddy-agent [6]
                Unresolved requirement: Import-Package: com.sun.tools.attach; resolution:="optional"
                Unresolved requirement: Import-Package: com.ibm.tools.attach; resolution:="optional"
         Unresolved requirement: Import-Package: net.bytebuddy.description.modifier; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.description.modifier; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.dynamic.loading; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.dynamic.loading; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.implementation.bytecode.assign; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.implementation.bytecode.assign; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.asm; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.asm; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.implementation; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.implementation; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.dynamic; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.dynamic; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.dynamic.scaffold.subclass; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.dynamic.scaffold.subclass; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.implementation.bind.annotation; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.implementation.bind.annotation; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.utility; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.utility; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
         Unresolved requirement: Import-Package: net.bytebuddy.pool; version="[1.6.0,2.0.0)"
           -> Export-Package: net.bytebuddy.pool; bundle-symbolic-name="net.bytebuddy.byte-buddy"; bundle-version="1.10.15"; version="1.10.15"
  Unresolved requirement: Import-Package: org.mockito.exceptions.base
    -> Export-Package: org.mockito.exceptions.base; bundle-symbolic-name="org.mockito.mockito-core"; bundle-version="3.5.14"; version="3.5.14"

    at org.eclipse.osgi.container.Module.start(Module.java:462)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:439)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:458)
    at org.mockito.osgitest.OsgiTest.setUpClasses(OsgiTest.java:74)
    ... 41 more

为了排除故障,我将它添加到了我的 Mockito rootbuild.gradle.subprojects中,从而构建了它:

    configurations.configureEach {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'org.objenesis') {
                details.useVersion '2.6'
            }
        }
    }

对于本地工作,我需要构建整个项目吗?如果没有,我该如何排除mockito-android

我在这里不知所措,我很感激任何人可以帮助我!:)

标签: javagradleinstallationmockito

解决方案


推荐阅读