java icon indicating copy to clipboard operation
java copied to clipboard

Using AssertJ assertions on entire exercises

Open sampada-dubey opened this issue 2 years ago • 7 comments

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!

sampada-dubey avatar Jul 23 '22 21:07 sampada-dubey

This sounds like a good idea, thanks for suggesting!

I edited the description with how to contribute to this issue.

andrerfcsantos avatar Jul 30 '22 09:07 andrerfcsantos

I'm working on this

anandhakrishnanaji avatar Aug 05 '22 00:08 anandhakrishnanaji

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?

suraj-mandal avatar Aug 15 '22 19:08 suraj-mandal

Convert exception assertions to AssertJ in classes starting with 'A' and 'B'. #2156

danielmrcl avatar Aug 20 '22 23:08 danielmrcl

I am working on the Haming

jennylia avatar Oct 14 '22 23:10 jennylia

https://github.com/exercism/java/pull/2178 is my PR

jennylia avatar Oct 14 '22 23:10 jennylia

https://github.com/exercism/java/pull/2181 another PR

jennylia avatar Oct 17 '22 01:10 jennylia

Hi, converting markdown from assertEquals to assertThat

smcg468 avatar Nov 16 '22 13:11 smcg468

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.

sanderploegsma avatar Sep 22 '23 11:09 sanderploegsma

Hello @sanderploegsma, I would like to contribute to a few exercises.

pavanbaloju avatar Oct 05 '23 07:10 pavanbaloju

Raised one more PR for few more tests. Please review !

pavanbaloju avatar Oct 05 '23 17:10 pavanbaloju

Raised one more PR for few more tests. Please review!

pavanbaloju avatar Oct 06 '23 07:10 pavanbaloju

Raised one more PR #2513 which covers all the pending tests which needs to be updated

pavanbaloju avatar Oct 06 '23 17:10 pavanbaloju

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?

sanderploegsma avatar Oct 06 '23 18:10 sanderploegsma

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?

keszocze avatar Oct 06 '23 19:10 keszocze

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

sanderploegsma avatar Oct 06 '23 19:10 sanderploegsma