web-dev-qa-db-fra.com

java.lang.IllegalStateException: impossible d'initialiser le plugin: MockMaker

Essayer d'exécuter le test d'instrumentation sur AS.

coincé avec cette erreur:

Java.lang.IllegalStateException: impossible d'initialiser le plug-in: interface org.mockito.plugins.MockMaker at org.mockito.internal.configuration.plugins.PluginLoader $ 1.invoke (PluginLoader.Java:66) at Java.lang.reflect.Proxy. invoquer (Proxy.Java:393) à $ Proxy4.isTypeMockable (Source inconnue)

ExampleInstrumentedTest.Java

      @RunWith(AndroidJUnit4.class)
        public class ExampleInstrumentedTest {

            @Mock
            Context context;

  @Before
    public void init(){
        MockitoAnnotations.initMocks(this);
    }

        @Test
            public void testDisabledFlag()  {
                ChanceValidator chanceValidator  = new ChanceValidator(context);
                Validator.ValidationResult result = chanceValidator.validate(2);
                assertEquals(result, Validator.ValidationResult.NO_ERROR);
        }
       }


build.gradle

apply plugin: 'com.Android.application'

     Android{
        ..
        defaultConfig {
                testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
        }

         testOptions {
                unitTests.returnDefaultValues = true
            }
    }


    dependencies {
        compile fileTree(include: ['*.jar'], dir: 'libs')
        // Unit testing dependencies
        testCompile 'junit:junit:4.12'
        // Set this dependency if you want to use the Hamcrest matcher library
        testCompile 'org.hamcrest:hamcrest-library:1.3'
        // more stuff, e.g., Mockito
        androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
            exclude group: 'com.Android.support', module: 'support-annotations'
        })
        compile 'com.Android.support:appcompat-v7:25.1.0'
        compile project(':mortar')
        compile project(':mockito-core-2.6.6')
    }


pdate: Après avoir commenté la ligne-

MockitoAnnotations.initMocks (this);

Il se construit bien (pas d'exception) mais le contexte simulé est désormais nul.

9
AskQ

Travaillé:

dependencies { 
def mockito_version = '2.7.1' // For local unit tests on your development machine
 testCompile "org.mockito:mockito-core:$mockito_version" // For instrumentation tests on Android devices and emulators
 androidTestCompile "org.mockito:mockito-Android:$mockito_version"
 }

Pas besoin de commenter initiMocks

10
AskQ

Dans mon cas, je travaillais sur un projet qui n'utilise pas le système de build maven. Voilà donc ce qui a fonctionné pour moi.

Accédé au dépôt maven pour mockito (utilisé v2.26): https://mvnrepository.com/artifact/org.mockito/mockito-core/2.26. . J'ai téléchargé le pot. Sur la même page en bas, j'ai recherché les dépendances. Pour mockito 2.26.0, ces dépendances sont:

Dans Eclipse, j'ai créé une bibliothèque utilisateur contenant les quatre fichiers jar et je l'ai ajoutée à mon projet.

NB: (la création de la bibliothèque est facultative, vous pouvez ajouter les jars directement au chemin de construction de votre projet)

J'espère que cela aide quelqu'un.

1
Kelli

N'incluez pas explicitement le mockito, laissez powermock tirer ce dont il a besoin.

1
TimP