Skip to content

Commit

Permalink
Refine tests
Browse files Browse the repository at this point in the history
- fix Runtime policy
- update to JUnit5
  • Loading branch information
koppor committed Aug 29, 2024
1 parent 5708b54 commit 0a1676a
Show file tree
Hide file tree
Showing 21 changed files with 131 additions and 215 deletions.
7 changes: 6 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,12 @@ allprojects {
}

dependencies {
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0'
testImplementation 'org.junit.platform:junit-platform-launcher:1.10.3'
}

test {
useJUnitPlatform()
}
}

Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
ElementType.TYPE_PARAMETER,
ElementType.TYPE_USE})
@ADR(2)
@Retention(RetentionPolicy.CLASS)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ArchitecturallySignificant {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
ElementType.TYPE_PARAMETER,
ElementType.TYPE_USE})
@ADR(2)
@Retention(RetentionPolicy.CLASS)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(MADRs.class)
public @interface MADR {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
ElementType.TYPE,
ElementType.TYPE_PARAMETER,
ElementType.TYPE_USE})
@Retention(RetentionPolicy.CLASS)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MADRs {
MADR[] value();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
ElementType.TYPE_PARAMETER,
ElementType.TYPE_USE})
@ADR(2)
@Retention(RetentionPolicy.CLASS)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(YStatementJustifications.class)
public @interface YStatementJustification {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
ElementType.TYPE,
ElementType.TYPE_PARAMETER,
ElementType.TYPE_USE})
@Retention(RetentionPolicy.CLASS)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface YStatementJustifications {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import java.lang.annotation.RetentionPolicy;

@ADR(2)
@Retention(RetentionPolicy.CLASS)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(ADRs.class)
public @interface ADR {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
/**
* Required for <code>@Repeatable</code> at {@link ADR}.
*/
@Retention(RetentionPolicy.CLASS)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ADRs {
ADR[] value();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
* Contributors:
* Oliver Kopp, Olaf Zimmermann - initial API and implementation
*/
package io.github.adr.embedded.demo;
package io.github.adr.embedded;

import java.util.UUID;

Expand All @@ -18,6 +18,8 @@
/**
* Annotations can, by design, not put everywhere.
* See https://stackoverflow.com/a/8425778/873282
*
* This class is in test, because it tests if it compiles.
*/
@ADR(1)
public class AnnotatedElements {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package io.github.adr.embedded;

@ArchitecturallySignificant(concerns = "performance and scalability needs", nfrs = {
ArchitecturallySignificant.QualityAttribute.PERFORMANCE,
ArchitecturallySignificant.QualityAttribute.MANAGEABILITY})
public class ArchitecturallySignificantDemoClass {
public int sampleBusinessLogic(String input) {
return 42;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package io.github.adr.embedded;

import java.util.Arrays;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class ArchitecturallySignificantTest {

@Test
void annotationPresent() {
Class<ArchitecturallySignificantDemoClass> obj = ArchitecturallySignificantDemoClass.class;
assertTrue(obj.isAnnotationPresent(ArchitecturallySignificant.class));
}

@Test
void annotationContentsCorrect() {
Class<ArchitecturallySignificantDemoClass> obj = ArchitecturallySignificantDemoClass.class;
ArchitecturallySignificant akmadAnnotation = obj.getAnnotation(ArchitecturallySignificant.class);
assertEquals("performance and scalability needs", akmadAnnotation.concerns());
assertEquals(Arrays.asList(
ArchitecturallySignificant.QualityAttribute.PERFORMANCE,
ArchitecturallySignificant.QualityAttribute.MANAGEABILITY),
Arrays.asList(akmadAnnotation.nfrs()));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package io.github.adr.embedded;

@MADR(value = 1,
title = "Implement entire business logic layer as POJO",
contextAndProblem = "Need to select a single consistent ComponentImplementationParadigm' for entire business logic layer",
alternatives = {"POJO", "JEE EJB", "Spring Bean"},
chosenAlternative = "POJO",
justification = "Because it is a company-wide policy.",
relatedDecisions = {2, 3})
public class MADRAnnotationPojoDemoClass {
public int sampleBusinessLogic(String input) {
return 42;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package io.github.adr.embedded;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class MADRTest {

@Test
void annotationPresent() {
Class<MADRAnnotationPojoDemoClass> obj = MADRAnnotationPojoDemoClass.class;
assertTrue(obj.isAnnotationPresent(MADR.class));
}

@Test
void annotationContentsCorrect() {
Class<MADRAnnotationPojoDemoClass> obj = MADRAnnotationPojoDemoClass.class;
MADR madr = obj.getAnnotation(MADR.class);

assertEquals(1, madr.value());
assertEquals("Implement entire business logic layer as POJO", madr.title());
assertEquals("Need to select a single consistent ComponentImplementationParadigm' for entire business logic layer", madr.contextAndProblem());
assertArrayEquals(new String[]{"POJO", "JEE EJB", "Spring Bean"}, madr.alternatives());
assertEquals("POJO", madr.chosenAlternative());
assertEquals("Because it is a company-wide policy.", madr.justification());
assertArrayEquals(new int[]{2, 3}, madr.relatedDecisions());
}
}
Loading

0 comments on commit 0a1676a

Please sign in to comment.