Skip to content

Using AssertJ assertions on entire exercises #2147

Closed

Description

@thethoughtcode

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!

Activity

  1. andrerfcsantos commented on Jul 30, 2022

    @andrerfcsantos
    Member

    This sounds like a good idea, thanks for suggesting!

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

  2. anandhakrishnanaji commented on Aug 5, 2022

    @anandhakrishnanaji

    I'm working on this

  3. suraj-mandal commented on Aug 15, 2022

    @suraj-mandal

    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?

  4. danielmrcl commented on Aug 20, 2022

    @danielmrcl
    Contributor

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

  5. jennylia commented on Oct 14, 2022

    @jennylia
    Contributor

    I am working on the Haming

  6. jennylia commented on Oct 14, 2022

    @jennylia
    Contributor

    #2178 is my PR

  7. jennylia commented on Oct 17, 2022

    @jennylia
    Contributor

    #2181 another PR

  8. smcg468 commented on Nov 16, 2022

    @smcg468
    Contributor

    Hi, converting markdown from assertEquals to assertThat

  9. sanderploegsma commented on Sep 22, 2023

    @sanderploegsma
    Contributor

    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.

  10. pavanbaloju commented on Oct 5, 2023

    @pavanbaloju
    Contributor

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

  11. pavanbaloju commented on Oct 5, 2023

    @pavanbaloju
    Contributor

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

  12. pavanbaloju commented on Oct 6, 2023

    @pavanbaloju
    Contributor

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

  13. pavanbaloju commented on Oct 6, 2023

    @pavanbaloju
    Contributor

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

  14. sanderploegsma commented on Oct 6, 2023

    @sanderploegsma
    Contributor

    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?

  15. keszocze commented on Oct 6, 2023

    @keszocze
    Contributor

    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?

  16. sanderploegsma commented on Oct 6, 2023

    @sanderploegsma
    Contributor

    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
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions