Stefano Cordio's Avatar

Stefano Cordio

@scordio.github.io

Software Engineer @ EPAM Systems Maintainer of @assertj.github.io

588 Followers  |  165 Following  |  96 Posts  |  Joined: 26.08.2023  |  2.3288

Latest posts by scordio.github.io on Bluesky

Preview
Introduce parameter contracts Β· Issue #757 Β· jspecify/jspecify With projects like Spring, Micrometer and many others starting to leverage JSpecify combined with a nullness checker, there is a very popular ask (both from Spring commiters and from community memb...

I made a proposal for introducing parameter level contracts to JSpecify in order to avoid the proliferation of `@Contract` annotation variants in the JVM ecosystem. πŸ‘ or feedback welcome on this issue. github.com/jspecify/jsp...

13.08.2025 10:52 β€” πŸ‘ 9    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Preview
Release v3.27.4 · assertj/assertj 🚫 Deprecated Core Deprecate org.assertj.core.annotations.Beta in favor of org.assertj.core.annotation.Beta Deprecate org.assertj.core.util.CanIgnoreReturnValue in favor of org.assertj.core.annotat...

πŸ“’ AssertJ 3.27.4 has been released!

This fixes a πŸ› regression introduced in 3.26.0, brings a few minor 🚫 deprecations, and paves the way for ⚑ smoother NullAway integration.

Happy assertions!

github.com/assertj/asse...

07.08.2025 15:46 β€” πŸ‘ 12    πŸ” 7    πŸ’¬ 0    πŸ“Œ 0
Preview
Hackergarten Lucerne, Thu, Aug 7, 2025, 6:00 PM | Meetup A Hackergarten is a friendly, hands-on event where developers, designers, and open source enthusiasts come together to contribute to real projects. No talks, just hands-on.

Du wolltest schon immer mal zu #opensource beitragen oder einfach mal reinschnuppern? Dann ist der #hackergarten genau das Richtige fΓΌr dich! Keine Vorkenntnisse nΓΆtig!

πŸ“… Wann: Donnerstag, 07.08. um 18:00 Uhr
πŸ“ Wo: Tribschenquartier Luzern
πŸ‘‰ Anmeldung: www.meetup.com/hackergarten...

06.08.2025 09:55 β€” πŸ‘ 3    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Preview
What's New in IntelliJ IDEA Explore IntelliJ IDEA's latest features and updates to elevate your professional Java and Kotlin development experience.

Intellij #IDEA 2025.2 is out, shipping dedicated #SpringModulith support. More details here:

05.08.2025 07:45 β€” πŸ‘ 16    πŸ” 5    πŸ’¬ 0    πŸ“Œ 1
Preview
Assert with Grace: Custom Soft Assertions using AssertJ for Cleaner Code - Elias Nogueira Introduction If you don't know what a soft assertion is, please read Soft Asserts – Why should you use them for Unit and Integration tests? This article is a continuation of Assert with Grace: Custom…

Want cleaner, more expressive tests in Java?

βœ… Avoid endless try-catch
βœ… Group failures with elegance
βœ… Use AssertJ the right way

Soft assertions can raise your testing game without clutter.

Learn how:
eliasnogueira.com/assert-with-...

#java #quality #test #qualityengineering

04.08.2025 08:58 β€” πŸ‘ 11    πŸ” 6    πŸ’¬ 0    πŸ“Œ 0
Preview
Quote text-based arguments in display names for parameterized tests · junit-team/junit-framework@50a8240 This commit introduces quoteTextArguments attributes in @⁠ParameterizedClass and @⁠ParameterizedTest which default to true. This new feature automatically encloses any CharSequence (such as a Stri...

#JUnit Jupiter 6 will quote text-based arguments and escape special characters in display names for parameterized tests. 😎

For example:

[1] text = null
[2] text = ""
[3] text = " "
[4] text = "\n"
[5] text = "lemon, lime"

github.com/junit-team/j...

docs.junit.org/snapshot/use...

31.07.2025 10:37 β€” πŸ‘ 7    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

Something is brewing β˜•

github.com/assertj/asse...

31.07.2025 09:58 β€” πŸ‘ 6    πŸ” 4    πŸ’¬ 0    πŸ“Œ 0
Preview
Release 3.12.1 Β· openrewrite/rewrite-recipe-bom What's Changed OpenRewrite v8.59.1 rewrite-gradle-plugin v7.12.1 rewrite-maven-plugin v6.15.0 Full Changelog: v6.15.0

OpenRewrite v8.59.1 is here! πŸ–

☸️ Parse Helm templates
⭐ Additional Groovy features
πŸ§‘β€πŸ« More AssertJ best practices
πŸŒ€ Simplify annotation attributes
πŸͺΆ Tolerate invalid POMs
β™» Remove with Refaster
πŸ”¬ New static analysis recipes
🐞 Many smaller improvements & fixes

github.com/openrewrite/...

24.07.2025 12:20 β€” πŸ‘ 13    πŸ” 5    πŸ’¬ 0    πŸ“Œ 0
JUnit 5 Release Notes

#JUnit 5.13.4 is released!

🐞 Bug fixes and minor improvements

junit.org/junit5/docs/...

21.07.2025 10:08 β€” πŸ‘ 14    πŸ” 5    πŸ’¬ 0    πŸ“Œ 0
Post image

Apache Maven 3.9.11 is now available for download: buff.ly/DtoHdpM

Maven is an #opensource software project management and comprehension tool.

20.07.2025 15:25 β€” πŸ‘ 19    πŸ” 10    πŸ’¬ 0    πŸ“Œ 0
Preview
Pause unused application contexts in the TestContext framework Β· spring-projects/spring-framework@dbe89ab Since the introduction of the Spring TestContext Framework in 2007, application contexts have always been stored in the context cache in a "running" state. However, leaving a context runn...

πŸƒ #Spring Framework 7.0 will provide built-in support for pausing & restarting unused application contexts between test classes.

This ensures that background processes in the context are not actively running while the context is not used by tests. πŸ‘πŸ»

github.com/spring-proje...

15.07.2025 09:49 β€” πŸ‘ 14    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
An AssertJ code snippet that demonstrates how the recursive comparison can be used to ignore fields of a specific type:

```
record Person(String name, Instant birthday) {}

@Test
void test() {
    var person1 = new Person("John", Instant.EPOCH);
    var person2 = new Person("John", Instant.now());
    
    assertThat(person1)
        .usingRecursiveComparison()
        .ignoringFieldsOfTypes(Instant.class)
        .isEqualTo(person2);
}
```

An AssertJ code snippet that demonstrates how the recursive comparison can be used to ignore fields of a specific type: ``` record Person(String name, Instant birthday) {} @Test void test() { var person1 = new Person("John", Instant.EPOCH); var person2 = new Person("John", Instant.now()); assertThat(person1) .usingRecursiveComparison() .ignoringFieldsOfTypes(Instant.class) .isEqualTo(person2); } ```

The AssertJ Recursive Comparison might be a good candidate for your use case:
assertj.github.io/doc/#assertj...

14.07.2025 16:42 β€” πŸ‘ 18    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0
Preview
Release v0.3.2 Β· scordio/jimfs-junit-jupiter ⚑ Improvements Add JSpecify and NullAway #27 Update JUnit's Javadoc link #28 πŸ”¨ Dependency Upgrades Upgrade to Jimfs 1.3.1 Upgrade to JUnit BOM 5.13.3 ❀️ Contributors Thanks to all the contribut...

πŸ“’ Jimfs JUnit Jupiter 0.3.2 has been released!

πŸ› οΈ This release upgrades Jimfs and JUnit to their latest versions.

πŸ§‘β€πŸ’» Any feedback is welcome!

github.com/scordio/jimf...

12.07.2025 10:18 β€” πŸ‘ 1    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
JUnit 5 Release Notes

#JUnit 5.13.3 is released!

🐞 Bug fixes and minor improvements

junit.org/junit5/docs/...

04.07.2025 13:05 β€” πŸ‘ 14    πŸ” 6    πŸ’¬ 0    πŸ“Œ 1
Preview
Hackergarten Lucerne, Thu, Jul 3, 2025, 6:00 PM | Meetup The Hackergarten is an event open to all, where everyone is welcome. Each participant can (but does not have to) suggest a topic related to an open-source project (regardle

🌱 Hackergarten Luzern this Thursday!
From 18:00 at CSS ICT Campus, RΓΆsslimatte 52.
πŸ’» Bring your laptop – join existing ideas or bring your own.
πŸ‘‰ Sign up: www.meetup.com/hackergarten...
#hackergarten #opensource #contribute #community #foss

30.06.2025 09:00 β€” πŸ‘ 2    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0
JUnit Release Notes

#JUnit 6.0.0-M1 is ready for testing!

✨ Require Java 17 and Kotlin 2.2
πŸŒ„ JSpecify nullability info
🚟 Kotlin suspend function support
πŸ›« Integrated custom JFR events
πŸš… FastCSV-backed Csv{File}Source
🧹 Remove deprecated APIs and behaviors

junit.org/junit5/docs/...

27.06.2025 15:42 β€” πŸ‘ 19    πŸ” 7    πŸ’¬ 1    πŸ“Œ 1
Preview
Demystifying Spring Boot With Spring Debugger | The IntelliJ IDEA Blog Pull back the curtain on the Spring Boot magic and see how the Spring Debugger plugin makes the invisible visible.

The new Spring Debugger recently released by JetBrains is IMO a game changer in terms of DevXP, both for the Spring team and for Spring Boot application developers. blog.jetbrains.com/idea/2025/06...

26.06.2025 07:41 β€” πŸ‘ 25    πŸ” 9    πŸ’¬ 0    πŸ“Œ 0
JUnit 5 Release Notes

#JUnit 5.13.2 is released!

⚠️ Fix discovery issue detection for inner classes and abstract methods
🐞 Bug fixes and minor improvements

junit.org/junit5/docs/...

24.06.2025 13:19 β€” πŸ‘ 11    πŸ” 7    πŸ’¬ 0    πŸ“Œ 0

To avoid confusion, I just renamed my fork...

from: github.com/sbrannen/jun...

to: github.com/sbrannen/jun...

You may want to do the same! 😎

23.06.2025 11:37 β€” πŸ‘ 3    πŸ” 4    πŸ’¬ 1    πŸ“Œ 0
Preview
Wait you can place Java annotations there? - Mostly nerdless "java.lang. @Nullable Integer @Nullable [] arr @Nullable []" is valid Java, but why? Learn more about the placement of Java annotations here.

You might find my blog post on annotations helpful: mostlynerdless.de/blog/2024/06...

23.06.2025 06:18 β€” πŸ‘ 2    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0

Ah! Got it now, thanks!

21.06.2025 20:02 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

That would express potential null elements in the non-null array field, but in my case I needed the field to be nullable.

21.06.2025 19:33 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
A Java code snippet containing:

private Object arguments @Nullable [];

A Java code snippet containing: private Object arguments @Nullable [];

Fixed! πŸ˜…

21.06.2025 16:25 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Exactly! From now on, to figure out where the annotations should go, I'll read any array declaration like:

[]<Object>

21.06.2025 16:11 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
A Java code snippet containing:

private Object @Nullable [] arguments;

A Java code snippet containing: private Object @Nullable [] arguments;

I'm definitely not used to reading such array declarations πŸ™ˆ

#Java #JSpecify

21.06.2025 15:08 β€” πŸ‘ 8    πŸ” 2    πŸ’¬ 4    πŸ“Œ 0
Preview
Should AssertJ be on Gitter? Β· assertj Β· Discussion #3855 Sometimes, users and contributors would like to engage more interactively with both maintainers and the rest of the community, and communicating via GitHub might feel intimidating.

Should we establish a dedicated space for the AssertJ community on Gitter?

Cast your vote!

github.com/orgs/assertj...

15.06.2025 10:03 β€” πŸ‘ 2    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0
Preview
Switzerland eSIM data plans from USD 3.99 Buy a virtual SIM card with prepaid data when you travel to Switzerland! Tourists can get reliable internet access starting at USD 3.99 in the Saily eSIM app.

If a data plan only with e-sim is an option, check saily.com/esim-switzer...

12.06.2025 11:08 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
git push --force in a Yoda meme

git push --force in a Yoda meme

One of those days when I'm grateful that `git reflog` exists

πŸ™ˆπŸ™

08.06.2025 16:41 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

If you're using #JUnit 5.13, I suggest you pay attention to discovery issues!

Run your build once with:

-Djunit.platform.discovery.issue.severity.critical=INFO

And see if your build fails. πŸ•΅πŸ»β€β™‚οΈ

NOTE: the default critical severity may change in 6.0.

07.06.2025 15:07 β€” πŸ‘ 4    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0
@ParameterizedClass
@ValueSource(strings = {"foo", "bar"})
class SomeTests {
    @Parameter String value;
    
    @Test
    void shouldNotBeNull() {
        assertNotNull(value);
    }
    @Test
    void lengthShouldBeThree() {
        assertEquals(3, value.length());
    }
}

@ParameterizedClass @ValueSource(strings = {"foo", "bar"}) class SomeTests { @Parameter String value; @Test void shouldNotBeNull() { assertNotNull(value); } @Test void lengthShouldBeThree() { assertEquals(3, value.length()); } }

✨ New blog post: "STF Milestone 4: Parameterized test classes"

JUnit 5.13 introduced parameterized test classes (in addition to methods). They are a powerful testing tool that has long been missing from JUnit Jupiter...

πŸ‘‰ marcphilipp.de/blog/2025/06...

07.06.2025 11:52 β€” πŸ‘ 31    πŸ” 11    πŸ’¬ 0    πŸ“Œ 0

@scordio.github.io is following 20 prominent accounts