diff --git a/spring-boot-test-support/src/main/java/org/springframework/boot/junit/runner/classpath/ModifiedClassPathRunner.java b/spring-boot-test-support/src/main/java/org/springframework/boot/junit/runner/classpath/ModifiedClassPathRunner.java index d437ed4d62..39d6dff98d 100644 --- a/spring-boot-test-support/src/main/java/org/springframework/boot/junit/runner/classpath/ModifiedClassPathRunner.java +++ b/spring-boot-test-support/src/main/java/org/springframework/boot/junit/runner/classpath/ModifiedClassPathRunner.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2016 the original author or authors. + * Copyright 2012-2017 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. @@ -334,7 +334,7 @@ public class ModifiedClassPathRunner extends BlockJUnit4ClassRunner { @Override public Class loadClass(String name) throws ClassNotFoundException { - if (name.startsWith("org.junit")) { + if (name.startsWith("org.junit") || name.startsWith("org.hamcrest")) { return this.junitLoader.loadClass(name); } return super.loadClass(name); diff --git a/spring-boot-test-support/src/test/java/org/springframework/boot/junit/runner/classpath/ModifiedClassPathRunnerExclusionsTests.java b/spring-boot-test-support/src/test/java/org/springframework/boot/junit/runner/classpath/ModifiedClassPathRunnerExclusionsTests.java index 5628cb8046..eb52410a11 100644 --- a/spring-boot-test-support/src/test/java/org/springframework/boot/junit/runner/classpath/ModifiedClassPathRunnerExclusionsTests.java +++ b/spring-boot-test-support/src/test/java/org/springframework/boot/junit/runner/classpath/ModifiedClassPathRunnerExclusionsTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2016 the original author or authors. + * Copyright 2012-2017 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. @@ -16,10 +16,13 @@ package org.springframework.boot.junit.runner.classpath; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import static org.assertj.core.api.Assertions.assertThat; +import static org.hamcrest.CoreMatchers.isA; /** * Tests for {@link ModifiedClassPathRunner} excluding entries from the class path. @@ -33,6 +36,9 @@ public class ModifiedClassPathRunnerExclusionsTests { private static final String EXCLUDED_RESOURCE = "META-INF/services/" + "javax.validation.spi.ValidationProvider"; + @Rule + public ExpectedException thrown = ExpectedException.none(); + @Test public void entriesAreFilteredFromTestClassClassLoader() { assertThat(getClass().getClassLoader().getResource(EXCLUDED_RESOURCE)).isNull(); @@ -44,4 +50,10 @@ public class ModifiedClassPathRunnerExclusionsTests { .getResource(EXCLUDED_RESOURCE)).isNull(); } + @Test + public void testsThatUseHamcrestWorkCorrectly() { + this.thrown.expect(isA(IllegalStateException.class)); + throw new IllegalStateException(); + } + }