Skip to content

Commit ad1f87f

Browse files
fix: Migrate ResourceTests to @ParameterizedClass
1 parent 7917ae5 commit ad1f87f

File tree

5 files changed

+1279
-1450
lines changed

5 files changed

+1279
-1450
lines changed

spring-core/src/test/java/org/springframework/core/io/ResourceTests.java

Lines changed: 76 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
import org.junit.jupiter.api.AfterEach;
4545
import org.junit.jupiter.api.Nested;
4646
import org.junit.jupiter.api.Test;
47-
import org.junit.jupiter.params.ParameterizedTest;
47+
import org.junit.jupiter.params.ParameterizedClass;
4848
import org.junit.jupiter.params.provider.Arguments;
4949
import org.junit.jupiter.params.provider.MethodSource;
5050

@@ -68,82 +68,88 @@
6868
*/
6969
class ResourceTests {
7070

71-
@ParameterizedTest
71+
@Nested
72+
@ParameterizedClass
7273
@MethodSource("resource")
73-
void resourceIsValid(Resource resource) throws Exception {
74-
assertThat(resource.getFilename()).isEqualTo("ResourceTests.class");
75-
assertThat(resource.getURL().getFile()).endsWith("ResourceTests.class");
76-
assertThat(resource.exists()).isTrue();
77-
assertThat(resource.isReadable()).isTrue();
78-
assertThat(resource.contentLength()).isGreaterThan(0);
79-
assertThat(resource.lastModified()).isGreaterThan(0);
80-
assertThat(resource.getContentAsByteArray()).containsExactly(Files.readAllBytes(Path.of(resource.getURI())));
81-
}
74+
class ParameterizedResourceTests {
8275

83-
@ParameterizedTest
84-
@MethodSource("resource")
85-
void resourceCreateRelative(Resource resource) throws Exception {
86-
Resource relative1 = resource.createRelative("ClassPathResourceTests.class");
87-
assertThat(relative1.getFilename()).isEqualTo("ClassPathResourceTests.class");
88-
assertThat(relative1.getURL().getFile().endsWith("ClassPathResourceTests.class")).isTrue();
89-
assertThat(relative1.exists()).isTrue();
90-
assertThat(relative1.isReadable()).isTrue();
91-
assertThat(relative1.contentLength()).isGreaterThan(0);
92-
assertThat(relative1.lastModified()).isGreaterThan(0);
93-
}
76+
private final Resource resource;
9477

95-
@ParameterizedTest
96-
@MethodSource("resource")
97-
void resourceCreateRelativeWithFolder(Resource resource) throws Exception {
98-
Resource relative2 = resource.createRelative("support/PathMatchingResourcePatternResolverTests.class");
99-
assertThat(relative2.getFilename()).isEqualTo("PathMatchingResourcePatternResolverTests.class");
100-
assertThat(relative2.getURL().getFile()).endsWith("PathMatchingResourcePatternResolverTests.class");
101-
assertThat(relative2.exists()).isTrue();
102-
assertThat(relative2.isReadable()).isTrue();
103-
assertThat(relative2.contentLength()).isGreaterThan(0);
104-
assertThat(relative2.lastModified()).isGreaterThan(0);
105-
}
78+
public ParameterizedResourceTests(Resource resource) {
79+
this.resource = resource;
80+
}
10681

107-
@ParameterizedTest
108-
@MethodSource("resource")
109-
void resourceCreateRelativeWithDotPath(Resource resource) throws Exception {
110-
Resource relative3 = resource.createRelative("../CollectionFactoryTests.class");
111-
assertThat(relative3.getFilename()).isEqualTo("CollectionFactoryTests.class");
112-
assertThat(relative3.getURL().getFile()).endsWith("CollectionFactoryTests.class");
113-
assertThat(relative3.exists()).isTrue();
114-
assertThat(relative3.isReadable()).isTrue();
115-
assertThat(relative3.contentLength()).isGreaterThan(0);
116-
assertThat(relative3.lastModified()).isGreaterThan(0);
117-
}
82+
@Test
83+
void resourceIsValid() throws Exception {
84+
assertThat(resource.getFilename()).isEqualTo("ResourceTests.class");
85+
assertThat(resource.getURL().getFile()).endsWith("ResourceTests.class");
86+
assertThat(resource.exists()).isTrue();
87+
assertThat(resource.isReadable()).isTrue();
88+
assertThat(resource.contentLength()).isGreaterThan(0);
89+
assertThat(resource.lastModified()).isGreaterThan(0);
90+
assertThat(resource.getContentAsByteArray()).containsExactly(Files.readAllBytes(Path.of(resource.getURI())));
91+
}
11892

119-
@ParameterizedTest
120-
@MethodSource("resource")
121-
void resourceCreateRelativeUnknown(Resource resource) throws Exception {
122-
Resource relative4 = resource.createRelative("X.class");
123-
assertThat(relative4.exists()).isFalse();
124-
assertThat(relative4.isReadable()).isFalse();
125-
assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::contentLength);
126-
assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::lastModified);
127-
assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::getInputStream);
128-
assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::readableChannel);
129-
assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::getContentAsByteArray);
130-
assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(() -> relative4.getContentAsString(UTF_8));
131-
}
93+
@Test
94+
void resourceCreateRelative() throws Exception {
95+
Resource relative1 = resource.createRelative("ClassPathResourceTests.class");
96+
assertThat(relative1.getFilename()).isEqualTo("ClassPathResourceTests.class");
97+
assertThat(relative1.getURL().getFile().endsWith("ClassPathResourceTests.class")).isTrue();
98+
assertThat(relative1.exists()).isTrue();
99+
assertThat(relative1.isReadable()).isTrue();
100+
assertThat(relative1.contentLength()).isGreaterThan(0);
101+
assertThat(relative1.lastModified()).isGreaterThan(0);
102+
}
132103

133-
private static Stream<Arguments> resource() throws URISyntaxException {
134-
URL resourceClass = ResourceTests.class.getResource("ResourceTests.class");
135-
Path resourceClassFilePath = Paths.get(resourceClass.toURI());
136-
return Stream.of(
137-
argumentSet("ClassPathResource", new ClassPathResource("org/springframework/core/io/ResourceTests.class")),
138-
argumentSet("ClassPathResource with ClassLoader", new ClassPathResource("org/springframework/core/io/ResourceTests.class", ResourceTests.class.getClassLoader())),
139-
argumentSet("ClassPathResource with Class", new ClassPathResource("ResourceTests.class", ResourceTests.class)),
140-
argumentSet("FileSystemResource", new FileSystemResource(resourceClass.getFile())),
141-
argumentSet("FileSystemResource with File", new FileSystemResource(new File(resourceClass.getFile()))),
142-
argumentSet("FileSystemResource with File path", new FileSystemResource(resourceClassFilePath)),
143-
argumentSet("UrlResource", new UrlResource(resourceClass))
144-
);
145-
}
104+
@Test
105+
void resourceCreateRelativeWithFolder() throws Exception {
106+
Resource relative2 = resource.createRelative("support/PathMatchingResourcePatternResolverTests.class");
107+
assertThat(relative2.getFilename()).isEqualTo("PathMatchingResourcePatternResolverTests.class");
108+
assertThat(relative2.getURL().getFile()).endsWith("PathMatchingResourcePatternResolverTests.class");
109+
assertThat(relative2.exists()).isTrue();
110+
assertThat(relative2.isReadable()).isTrue();
111+
assertThat(relative2.contentLength()).isGreaterThan(0);
112+
assertThat(relative2.lastModified()).isGreaterThan(0);
113+
}
146114

115+
@Test
116+
void resourceCreateRelativeWithDotPath() throws Exception {
117+
Resource relative3 = resource.createRelative("../CollectionFactoryTests.class");
118+
assertThat(relative3.getFilename()).isEqualTo("CollectionFactoryTests.class");
119+
assertThat(relative3.getURL().getFile()).endsWith("CollectionFactoryTests.class");
120+
assertThat(relative3.exists()).isTrue();
121+
assertThat(relative3.isReadable()).isTrue();
122+
assertThat(relative3.contentLength()).isGreaterThan(0);
123+
assertThat(relative3.lastModified()).isGreaterThan(0);
124+
}
125+
126+
@Test
127+
void resourceCreateRelativeUnknown() throws Exception {
128+
Resource relative4 = resource.createRelative("X.class");
129+
assertThat(relative4.exists()).isFalse();
130+
assertThat(relative4.isReadable()).isFalse();
131+
assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::contentLength);
132+
assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::lastModified);
133+
assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::getInputStream);
134+
assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::readableChannel);
135+
assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::getContentAsByteArray);
136+
assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(() -> relative4.getContentAsString(UTF_8));
137+
}
138+
139+
private static Stream<Arguments> resource() throws URISyntaxException {
140+
URL resourceClass = ResourceTests.class.getResource("ResourceTests.class");
141+
Path resourceClassFilePath = Paths.get(resourceClass.toURI());
142+
return Stream.of(
143+
argumentSet("ClassPathResource", new ClassPathResource("org/springframework/core/io/ResourceTests.class")),
144+
argumentSet("ClassPathResource with ClassLoader", new ClassPathResource("org/springframework/core/io/ResourceTests.class", ResourceTests.class.getClassLoader())),
145+
argumentSet("ClassPathResource with Class", new ClassPathResource("ResourceTests.class", ResourceTests.class)),
146+
argumentSet("FileSystemResource", new FileSystemResource(resourceClass.getFile())),
147+
argumentSet("FileSystemResource with File", new FileSystemResource(new File(resourceClass.getFile()))),
148+
argumentSet("FileSystemResource with File path", new FileSystemResource(resourceClassFilePath)),
149+
argumentSet("UrlResource", new UrlResource(resourceClass))
150+
);
151+
}
152+
}
147153

148154
@Nested
149155
class ByteArrayResourceTests {

0 commit comments

Comments
 (0)