/* * Copyright 2012-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.boot.autoconfigure.jdbc; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.BeanCreationException; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.diagnostics.FailureAnalysis; import org.springframework.boot.junit.runner.classpath.ClassPathExclusions; import org.springframework.boot.junit.runner.classpath.ModifiedClassPathRunner; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Configuration; import static org.assertj.core.api.Assertions.assertThat; /** * Tests for {@link DataSourceBeanCreationFailureAnalyzer}. * * @author Andy Wilkinson */ @RunWith(ModifiedClassPathRunner.class) @ClassPathExclusions({ "h2-*.jar", "hsqldb-*.jar" }) public class DataSourceBeanCreationFailureAnalyzerTests { @Test public void failureAnalysisIsPerformed() { FailureAnalysis failureAnalysis = performAnalysis(TestConfiguration.class); assertThat(failureAnalysis.getDescription()).isEqualTo( "Cannot determine embedded database driver class for database type NONE"); assertThat(failureAnalysis.getAction()).isEqualTo("If you want an embedded " + "database please put a supported one on the classpath. If you have " + "database settings to be loaded from a particular profile you may " + "need to active it (no profiles are currently active)."); } private FailureAnalysis performAnalysis(Class<?> configuration) { BeanCreationException failure = createFailure(configuration); assertThat(failure).isNotNull(); return new DataSourceBeanCreationFailureAnalyzer().analyze(failure); } private BeanCreationException createFailure(Class<?> configuration) { try { new AnnotationConfigApplicationContext(configuration).close(); return null; } catch (BeanCreationException ex) { return ex; } } @Configuration @ImportAutoConfiguration(DataSourceAutoConfiguration.class) static class TestConfiguration { } }