Skip to content

Commit b72abd3

Browse files
author
David O'Sullivan
committed
updates Conditonal CloudFoundry version based test to JUnit 5
1 parent c456d02 commit b72abd3

File tree

77 files changed

+182
-183
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+182
-183
lines changed

integration-test/pom.xml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,18 @@
7676
<version>${project.version}</version>
7777
<scope>test</scope>
7878
</dependency>
79+
<dependency>
80+
<groupId>org.hamcrest</groupId>
81+
<artifactId>hamcrest-junit</artifactId>
82+
<version>2.0.0.0</version>
83+
<scope>test</scope>
84+
<exclusions>
85+
<exclusion>
86+
<groupId>junit</groupId>
87+
<artifactId>junit</artifactId>
88+
</exclusion>
89+
</exclusions>
90+
</dependency>
7991
<dependency>
8092
<groupId>org.immutables</groupId>
8193
<artifactId>value</artifactId>
@@ -91,11 +103,6 @@
91103
<artifactId>spring-boot-starter-test</artifactId>
92104
<scope>test</scope>
93105
</dependency>
94-
<dependency>
95-
<groupId>org.junit.vintage</groupId>
96-
<artifactId>junit-vintage-engine</artifactId>
97-
<scope>test</scope>
98-
</dependency>
99106
</dependencies>
100107

101108
<build>

integration-test/src/test/java/org/cloudfoundry/AbstractIntegrationTest.java

Lines changed: 72 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -14,78 +14,75 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.cloudfoundry;
18-
19-
import org.junit.After;
20-
import org.junit.Before;
21-
import org.junit.Rule;
22-
import org.junit.rules.TestName;
23-
import org.junit.runner.RunWith;
24-
import org.slf4j.Logger;
25-
import org.slf4j.LoggerFactory;
26-
import org.springframework.beans.factory.annotation.Autowired;
27-
import org.springframework.test.context.ContextConfiguration;
28-
import org.springframework.test.context.junit4.SpringRunner;
29-
import reactor.core.publisher.Mono;
30-
import reactor.util.function.Tuple2;
31-
32-
import java.io.ByteArrayOutputStream;
33-
import java.io.File;
34-
import java.io.FileInputStream;
35-
import java.io.IOException;
36-
import java.io.InputStream;
37-
import java.util.function.Consumer;
38-
39-
import static org.assertj.core.api.Assertions.assertThat;
40-
import static org.cloudfoundry.util.tuple.TupleUtils.consumer;
41-
42-
@RunWith(SpringRunner.class)
43-
@ContextConfiguration(classes = IntegrationTestConfiguration.class)
44-
public abstract class AbstractIntegrationTest {
45-
46-
private final Logger logger = LoggerFactory.getLogger("cloudfoundry-client.test");
47-
48-
@Rule
49-
public final TestName testName = new TestName();
50-
51-
@Autowired
52-
@Rule
53-
public CloudFoundryVersionConditionalRule cloudFoundryVersion;
54-
55-
@Autowired
56-
protected NameFactory nameFactory;
57-
58-
@Before
59-
public void testEntry() {
60-
this.logger.debug(">> {} <<", getTestName());
61-
}
62-
63-
@After
64-
public final void testExit() {
65-
this.logger.debug("<< {} >>", getTestName());
66-
}
67-
68-
protected static Mono<byte[]> getBytes(String path) {
69-
try (InputStream in = new FileInputStream(new File("src/test/resources", path)); ByteArrayOutputStream out = new ByteArrayOutputStream()) {
70-
byte[] buffer = new byte[8192];
71-
int len;
72-
73-
while ((len = in.read(buffer)) != -1) {
74-
out.write(buffer, 0, len);
75-
}
76-
77-
return Mono.just(out.toByteArray());
78-
} catch (IOException e) {
79-
throw new RuntimeException(e);
80-
}
81-
}
82-
83-
protected static <T> Consumer<Tuple2<T, T>> tupleEquality() {
84-
return consumer((expected, actual) -> assertThat(actual).isEqualTo(expected));
85-
}
86-
87-
private String getTestName() {
88-
return String.format("%s.%s", this.getClass().getSimpleName(), this.testName.getMethodName());
89-
}
90-
91-
}
17+
package org.cloudfoundry;
18+
19+
import org.junit.jupiter.api.AfterEach;
20+
import org.junit.jupiter.api.BeforeEach;
21+
import org.junit.jupiter.api.TestInfo;
22+
import org.slf4j.Logger;
23+
import org.slf4j.LoggerFactory;
24+
import org.springframework.beans.factory.annotation.Autowired;
25+
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
26+
import reactor.core.publisher.Mono;
27+
import reactor.util.function.Tuple2;
28+
29+
import java.io.ByteArrayOutputStream;
30+
import java.io.File;
31+
import java.io.FileInputStream;
32+
import java.io.IOException;
33+
import java.io.InputStream;
34+
import java.lang.reflect.Method;
35+
import java.util.Optional;
36+
import java.util.function.Consumer;
37+
38+
import static org.assertj.core.api.Assertions.assertThat;
39+
import static org.cloudfoundry.util.tuple.TupleUtils.consumer;
40+
41+
@SpringJUnitConfig(classes = IntegrationTestConfiguration.class)
42+
public abstract class AbstractIntegrationTest {
43+
44+
private final Logger logger = LoggerFactory.getLogger("cloudfoundry-client.test");
45+
46+
public String testName;
47+
48+
@Autowired
49+
protected NameFactory nameFactory;
50+
51+
@BeforeEach
52+
public void testEntry(TestInfo testInfo) {
53+
Optional<Method> testMethod = testInfo.getTestMethod();
54+
if (testMethod.isPresent()) {
55+
this.testName = testMethod.get().getName();
56+
}
57+
this.logger.debug(">> {} <<", getTestName());
58+
}
59+
60+
@AfterEach
61+
public final void testExit() {
62+
this.logger.debug("<< {} >>", getTestName());
63+
}
64+
65+
protected static Mono<byte[]> getBytes(String path) {
66+
try (InputStream in = new FileInputStream(new File("src/test/resources", path)); ByteArrayOutputStream out = new ByteArrayOutputStream()) {
67+
byte[] buffer = new byte[8192];
68+
int len;
69+
70+
while ((len = in.read(buffer)) != -1) {
71+
out.write(buffer, 0, len);
72+
}
73+
74+
return Mono.just(out.toByteArray());
75+
} catch (IOException e) {
76+
throw new RuntimeException(e);
77+
}
78+
}
79+
80+
protected static <T> Consumer<Tuple2<T, T>> tupleEquality() {
81+
return consumer((expected, actual) -> assertThat(actual).isEqualTo(expected));
82+
}
83+
84+
private String getTestName() {
85+
return String.format("%s.%s", this.getClass().getSimpleName(), this.testName);
86+
}
87+
88+
}

integration-test/src/test/java/org/cloudfoundry/CloudFoundryVersionConditionalRule.java

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,18 @@
1717
package org.cloudfoundry;
1818

1919
import com.github.zafarkhaja.semver.Version;
20-
import org.junit.Assume;
21-
import org.junit.rules.MethodRule;
22-
import org.junit.runners.model.FrameworkMethod;
23-
import org.junit.runners.model.Statement;
20+
import org.junit.jupiter.api.Assumptions;
21+
import org.junit.jupiter.api.extension.ConditionEvaluationResult;
22+
import org.junit.jupiter.api.extension.ExecutionCondition;
23+
import org.junit.jupiter.api.extension.ExtensionContext;
2424
import org.springframework.core.annotation.AnnotationUtils;
2525

26+
import java.lang.reflect.AnnotatedElement;
2627
import java.util.Optional;
2728

2829
import static org.cloudfoundry.CloudFoundryVersion.UNSPECIFIED;
2930

30-
final class CloudFoundryVersionConditionalRule implements MethodRule {
31+
final class CloudFoundryVersionConditionalRule implements ExecutionCondition {
3132

3233
private final Version server;
3334

@@ -36,23 +37,17 @@ final class CloudFoundryVersionConditionalRule implements MethodRule {
3637
}
3738

3839
@Override
39-
public Statement apply(Statement base, FrameworkMethod method, Object target) {
40-
return new Statement() {
40+
public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) {
41+
AnnotatedElement element = context.getElement().orElse(null);
4142

42-
@Override
43-
public void evaluate() throws Throwable {
44-
IfCloudFoundryVersion annotation = Optional.ofNullable(AnnotationUtils.findAnnotation(method.getMethod(), IfCloudFoundryVersion.class))
45-
.orElse(AnnotationUtils.findAnnotation(method.getDeclaringClass(), IfCloudFoundryVersion.class));
43+
IfCloudFoundryVersion annotation = AnnotationUtils.findAnnotation(element, IfCloudFoundryVersion.class);
4644

47-
boolean enabled = Optional.ofNullable(annotation)
45+
boolean enabled = Optional.ofNullable(annotation)
4846
.map(c -> isTestEnabled(c, CloudFoundryVersionConditionalRule.this.server))
4947
.orElse(true);
5048

51-
Assume.assumeTrue(String.format("Cloud Foundry version required by @IfCloudFoundryVersion is not valid for test method [%s].", method.getMethod()), enabled);
52-
53-
base.evaluate();
54-
}
55-
};
49+
return enabled ? ConditionEvaluationResult.enabled("Test enabled") : ConditionEvaluationResult.disabled(String.format("Cloud Foundry version required by @IfCloudFoundryVersion is not valid for test method [%s].", element));
50+
5651
}
5752

5853
private static boolean isTestEnabled(IfCloudFoundryVersion condition, Version server) {

integration-test/src/test/java/org/cloudfoundry/client/v2/ApplicationsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
import org.cloudfoundry.util.OperationUtils;
7070
import org.cloudfoundry.util.PaginationUtils;
7171
import org.cloudfoundry.util.ResourceUtils;
72-
import org.junit.Test;
72+
import org.junit.jupiter.api.Test;
7373
import org.springframework.beans.factory.annotation.Autowired;
7474
import org.springframework.core.io.ClassPathResource;
7575
import org.springframework.util.Assert;

integration-test/src/test/java/org/cloudfoundry/client/v2/BlobstoresTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import org.cloudfoundry.client.CloudFoundryClient;
2121
import org.cloudfoundry.client.v2.blobstores.DeleteBlobstoreBuildpackCachesRequest;
2222
import org.cloudfoundry.util.JobUtils;
23-
import org.junit.Test;
23+
import org.junit.jupiter.api.Test;
2424
import org.springframework.beans.factory.annotation.Autowired;
2525
import reactor.test.StepVerifier;
2626

integration-test/src/test/java/org/cloudfoundry/client/v2/BuildpacksTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import org.cloudfoundry.util.JobUtils;
3131
import org.cloudfoundry.util.PaginationUtils;
3232
import org.cloudfoundry.util.ResourceUtils;
33-
import org.junit.Test;
33+
import org.junit.jupiter.api.Test;
3434
import org.springframework.beans.factory.annotation.Autowired;
3535
import org.springframework.core.io.ClassPathResource;
3636
import reactor.core.publisher.Flux;

integration-test/src/test/java/org/cloudfoundry/client/v2/DomainsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
import org.cloudfoundry.util.JobUtils;
4646
import org.cloudfoundry.util.PaginationUtils;
4747
import org.cloudfoundry.util.ResourceUtils;
48-
import org.junit.Test;
48+
import org.junit.jupiter.api.Test;
4949
import org.springframework.beans.factory.annotation.Autowired;
5050
import reactor.core.publisher.Flux;
5151
import reactor.core.publisher.Mono;

integration-test/src/test/java/org/cloudfoundry/client/v2/EventsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import org.cloudfoundry.client.v2.events.GetEventRequest;
2323
import org.cloudfoundry.client.v2.events.ListEventsRequest;
2424
import org.cloudfoundry.util.ResourceUtils;
25-
import org.junit.Test;
25+
import org.junit.jupiter.api.Test;
2626
import org.springframework.beans.factory.annotation.Autowired;
2727
import reactor.core.publisher.Flux;
2828
import reactor.core.publisher.Mono;

integration-test/src/test/java/org/cloudfoundry/client/v2/FeatureFlagsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import org.cloudfoundry.client.v2.featureflags.GetFeatureFlagRequest;
2323
import org.cloudfoundry.client.v2.featureflags.ListFeatureFlagsRequest;
2424
import org.cloudfoundry.client.v2.featureflags.SetFeatureFlagRequest;
25-
import org.junit.Test;
25+
import org.junit.jupiter.api.Test;
2626
import org.springframework.beans.factory.annotation.Autowired;
2727
import reactor.core.publisher.Flux;
2828
import reactor.core.publisher.Mono;

integration-test/src/test/java/org/cloudfoundry/client/v2/InfoTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import org.cloudfoundry.AbstractIntegrationTest;
2121
import org.cloudfoundry.client.CloudFoundryClient;
2222
import org.cloudfoundry.client.v2.info.GetInfoRequest;
23-
import org.junit.Test;
23+
import org.junit.jupiter.api.Test;
2424
import org.springframework.beans.factory.annotation.Autowired;
2525
import reactor.test.StepVerifier;
2626

0 commit comments

Comments
 (0)