java
java copied to clipboard
Using AssertJ assertions on entire exercises
The test classes use mix of Junit asserts and AssertJ. Since AssertJ assertions are more robust and extensive as compared to Junit5.
Like for example, usage of assertThatExceptionOfType
from AssertJ is much more readable as compare to assertThrows
from JUnit 5.
assertThatExceptionOfType(RuntimeException.class)
.isThrownBy(() -> { throw new RuntimeException(new IllegalArgumentException("boom!")); })
.havingCause()
.withMessage("boom!");
We can migrate all the asserts from Junit to AsserJ.
Working on this issue
This issue affects several exercises. If you want to contribute to this issue, you don't have to change this in all exercises, feel free to submit small PRs fixing this issue for a single exercise or a small subset of exercises!
This sounds like a good idea, thanks for suggesting!
I edited the description with how to contribute to this issue.
I'm working on this
Hi, this is my first time, I will be contributing towards open source. May I work on this issue, and migrate some of the tests from junit5 to AssertJ?
Convert exception assertions to AssertJ in classes starting with 'A' and 'B'. #2156
I am working on the Haming
https://github.com/exercism/java/pull/2178 is my PR
https://github.com/exercism/java/pull/2181 another PR
Hi, converting markdown from assertEquals to assertThat
I am in favour of this change, but it does mean that we have to revise the existing policy in POLICIES.md that states that we prefer JUnit assertions over AssertJ.
Hello @sanderploegsma, I would like to contribute to a few exercises.
Raised one more PR for few more tests. Please review !
Raised one more PR for few more tests. Please review!
Raised one more PR #2513 which covers all the pending tests which needs to be updated
I found three more practice exercises to update.
- Grade School
- Tree Building
- Zipper
@keszocze I know you're working on Zipper, care to pick up the other two as well?
edit: Yes of course I can also change those.
But there are some more (and I will also change them):
grep -l 'org.junit.Assert' practice/*/src/test/java/*.java practice/diffie-hellman/src/test/java/DiffieHellmanTest.java
practice/grade-school/src/test/java/SchoolTest.java
practice/octal/src/test/java/OctalTest.java
practice/strain/src/test/java/StrainTest.java
practice/tree-building/src/test/java/BuildTreeTest.java
practice/trinary/src/test/java/TrinaryTest.java
practice/zipper/src/test/java/ZipperTest.java
and I sure can also touch them. But that might take until Monday.
Btw, in my last PR I was told that the Diffie Hellman exercise was deprecated and that this tells me how to spot that. But looking at the config.json
shows none of the mentioned things in that file. I can't even find a status
entry in any of the json files: grep status */*/.(meta|approaches)/*.json
yields no results. How can I spot the deprecated exercises?
I'm guessing you're looking at each exercise's .meta/config.json
file, but the exercise statuses are kept in config.json
at the root of this repository. Here's a list of the practice exercises currently deprecated:
cat config.json | jq -r '.exercises.practice[] | select(.status == "deprecated") | .slug' | sort
accumulate
beer-song
binary
diffie-hellman
hexadecimal
octal
strain
trinary