diff --git a/java/README.md b/java/README.md new file mode 100644 index 0000000..694dfde --- /dev/null +++ b/java/README.md @@ -0,0 +1,23 @@ +# Show, Don't Tell — Java exercise workspace + +Java track for the "Show, Don't Tell — Using Examples with Coding Agents" exercise (Java 21 / Maven / JUnit 5 / AssertJ). + +## Prerequisites + +- Java 21 (Temurin) and Maven, versions pinned in `mise.toml` +- If you use [mise](https://mise.jdx.dev): `mise install` installs both + +## Build and run the tests + +```sh +mvn test +``` + +## Layout + +| Module | Contents | +| --- | --- | +| `order-domain`, `order-tests` | Order domain with discount behaviour, and its tests (Round 1) | +| `order-book-domain`, `order-book-tests` | OrderBook state machine, and its integration tests (Round 2) | + +The exercise starts in its START state: all tests are green, the refactoring participants should do is NOT applied. The custom matcher example lives in `order-tests` (`OrderStateAssertion`). diff --git a/java/mise.toml b/java/mise.toml new file mode 100644 index 0000000..ddcb511 --- /dev/null +++ b/java/mise.toml @@ -0,0 +1,3 @@ +[tools] +java = "temurin-21.0.9+10.0.LTS" +maven = "3.9.16" diff --git a/java/order-book-domain/pom.xml b/java/order-book-domain/pom.xml new file mode 100644 index 0000000..2168561 --- /dev/null +++ b/java/order-book-domain/pom.xml @@ -0,0 +1,15 @@ + + + 4.0.0 + + + dev.learninghour.showdonttell + show-dont-tell-java + 1.0.0-SNAPSHOT + + + order-book-domain + jar + diff --git a/java/order-book-tests/pom.xml b/java/order-book-tests/pom.xml new file mode 100644 index 0000000..820d5c1 --- /dev/null +++ b/java/order-book-tests/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + + dev.learninghour.showdonttell + show-dont-tell-java + 1.0.0-SNAPSHOT + + + order-book-tests + jar + + + + dev.learninghour.showdonttell + order-book-domain + ${project.version} + + + org.junit.jupiter + junit-jupiter + ${junit.version} + test + + + diff --git a/java/order-domain/pom.xml b/java/order-domain/pom.xml new file mode 100644 index 0000000..935916d --- /dev/null +++ b/java/order-domain/pom.xml @@ -0,0 +1,15 @@ + + + 4.0.0 + + + dev.learninghour.showdonttell + show-dont-tell-java + 1.0.0-SNAPSHOT + + + order-domain + jar + diff --git a/java/order-tests/pom.xml b/java/order-tests/pom.xml new file mode 100644 index 0000000..168db8e --- /dev/null +++ b/java/order-tests/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + + dev.learninghour.showdonttell + show-dont-tell-java + 1.0.0-SNAPSHOT + + + order-tests + jar + + + + dev.learninghour.showdonttell + order-domain + ${project.version} + + + org.junit.jupiter + junit-jupiter + ${junit.version} + test + + + org.assertj + assertj-core + ${assertj.version} + test + + + diff --git a/java/pom.xml b/java/pom.xml new file mode 100644 index 0000000..2140662 --- /dev/null +++ b/java/pom.xml @@ -0,0 +1,35 @@ + + + 4.0.0 + + dev.learninghour.showdonttell + show-dont-tell-java + 1.0.0-SNAPSHOT + pom + + + order-domain + order-book-domain + order-tests + order-book-tests + + + + UTF-8 + 21 + 5.14.4 + 3.27.7 + + + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.5.6 + + + +