/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.configuration; import net.bytebuddy.ByteBuddy; import org.assertj.core.api.Assertions; import org.junit.After; import org.junit.Test; import org.mockito.Mockito; import org.mockito.configuration.AnnotationEngine; import org.mockito.internal.configuration.plugins.Plugins; import org.mockitoutil.ClassLoaders; import org.objenesis.Objenesis; import static org.assertj.core.api.Assertions.assertThat; public class GlobalConfigurationTest { @Test public void returns_mockito_configuration_annotation_engine_if_non_default() throws Exception { ConfigurationAccess.getConfig().overrideAnnotationEngine(new CustomAnnotationEngine()); assertThat(new GlobalConfiguration().getAnnotationEngine()).isInstanceOf(CustomAnnotationEngine.class); assertThat(new GlobalConfiguration().tryGetPluginAnnotationEngine()).isInstanceOf(CustomAnnotationEngine.class); } @Test public void returns_mockito_annotation_engine_of_Plugins_if_no_MockitoConfiguration() throws Throwable { ClassLoader anotherWorld = ClassLoaders.isolatedClassLoader() .withCurrentCodeSourceUrls() .withCodeSourceUrlOf(Mockito.class, ByteBuddy.class, Objenesis.class) .withPrivateCopyOf("org.mockito", "net.bytebuddy", "org.objenesis") .withCodeSourceUrlOf(Assertions.class) .withPrivateCopyOf("org.assertj") .without("org.mockito.configuration.MockitoConfiguration") .build(); ClassLoaders.using(anotherWorld).execute(new Runnable() { @Override public void run() { assertThat(new GlobalConfiguration().getAnnotationEngine()).isInstanceOf(Plugins.getAnnotationEngine().getClass()); assertThat(new GlobalConfiguration().tryGetPluginAnnotationEngine()).isInstanceOf(Plugins.getAnnotationEngine().getClass()); } }); } @After public void reset_annotation_engine() { ConfigurationAccess.getConfig().overrideAnnotationEngine(null); } private static class CustomAnnotationEngine implements AnnotationEngine { @Override public void process(Class<?> clazz, Object testInstance) { } } }