Allow TestCompiler DynamicClassLoader to resolve '.class' resources

Update `DynamicClassLoader` so that `findResource(...)` also considered
compiled class bytecode.

Closes gh-29347
This commit is contained in:
Phillip Webb
2022-10-18 11:14:57 -07:00
parent d17cdf98bb
commit 327eec09ae
2 changed files with 30 additions and 10 deletions

View File

@@ -16,6 +16,7 @@
package org.springframework.core.test.tools;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -278,6 +279,15 @@ class TestCompilerTests {
compiled.getInstance(PublicInterface.class, "com.example.Test").perform()).isEqualTo("Hello from subpackage"));
}
@Test
void getResourceForCompiledBytecode() {
SourceFile sourceFile = SourceFile.of(HELLO_WORLD);
TestCompiler.forSystem().compile(sourceFile, compiled -> {
InputStream stream = compiled.getClassLoader().getResourceAsStream("com/example/Hello.class");
assertThat(stream).isNotNull();
});
}
private void assertSuppliesHelloWorld(Compiled compiled) {
assertThat(compiled.getInstance(Supplier.class).get()).isEqualTo("Hello World!");
}