Jan Ouwens
jqno.nl
Jan Ouwens
@jqno.nl
Developer ◦ Java/JVM ◦ EqualsVerifier ◦ speaker ◦ @yoinknl but opinions mine ◦ 👨‍👩‍👧 ◦ 🇳🇱🇪🇺 ◦ 🖖🏻 ◦ 💚 ◦ 🇺🇦🌻 ◦ he/him
I spent 6 hours in MS Teams meetings today.

Let's not repeat this any time soon...
November 27, 2025 at 3:55 PM
EqualsVerifier 4.2.4 is out!

Some people reported an UnnecessaryStubbingException caused by EqualsVerifier. This is now fixed!

Check out the changelog at github.com/jqno/equalsv...

#java
github.com
November 25, 2025 at 8:30 AM
EqualsVerifier 4.2.3 is out!

It contains some small improvements for tests that are run on the module path. Also, it improves on error messages when Mockito is in use.

Check it out at github.com/jqno/equalsv...

#java
github.com
November 15, 2025 at 7:34 PM
EqualsVerifier 4.2.2 is out!

It now supports EnumSets and EnumMaps for enums with only one value. Also, I fixed an error message that referred to Warning.ZERO_FIELDS, which was removed in version 4.0.

All in all, very exciting stuff

Check it out at github.com/jqno/equalsv...

#java
github.com
November 9, 2025 at 6:58 PM
Thank you to everyone who joined my talk at #jfall today!

You can find my slides here: jqno.nl/talks/slides...
Less is more: reduce $ and CO₂ to improve performance 🚀 and joy 🥳
jqno.nl
November 6, 2025 at 11:55 AM
I'll be at #JFall next Thursday! Hope to see you there!
November 4, 2025 at 12:29 PM
EqualsVerifier 4.2.1 is out!

It fixes an issue with Kotlin lazy delegates with a generic type.

Check out the changelog at github.com/jqno/equalsv...

#java
github.com
October 29, 2025 at 8:05 AM
I really appreciate that license! I often try to game it in my PRs by having 0 surviving issues on the first try. I just opened a big PR and managed to kill 187, but 7 still survive. I'm a little bit proud of myself now.

But I'm also happy that I get to ship without those 7 issues that I missed!
We provide free arcmutate licences to open source projects as a matter of principle, but a great side benefit is that we get sent good quality bug reports and feature suggestions.
October 27, 2025 at 9:30 AM
It turns out the YouTube app on my tv was set to Dutch, and I could change it in the settings.

I set it to English which fixes my problem! (And probably introduces the new problem of translating all Dutch videos into English...but we'll cross that bridge when we get there)

Thanks @bjeaurn.com !
Youtube setting! I assume it carries over to TV and other devices.

I think it’s achieved by setting your Youtube’s language to British English.
October 18, 2025 at 12:07 PM
My "smart" tv is translating YouTube video titles to Dutch and I hate it.

The phrasing feels awkward. More importantly, it suggests the videos are in Dutch, which they're not.
October 18, 2025 at 11:44 AM
EqualsVerifier 4.2 is out!

It has prefab values for Java 25's ScopedValues, but the main attraction is that support for #Kotlin delegates is greatly improved! They're now much easier to work with, and also error messages are much clearer.

Check out the details at github.com/jqno/equalsv...

#java
github.com
October 3, 2025 at 9:24 AM
I just upgraded EqualsVerifier and I have to say, the process was extremely painless! I had exactly 1 deprecation to deal with and that was it.
#JUnit 6.0.0 is released!

✨ Java 17 and Kotlin 2.2 baseline
🌄 JSpecify nullability annotations
🛫 Integrated JFR support
🚟 Kotlin suspend function support
🛑 Support for cancelling test execution
⏭️ New `--fail-fast` mode for ConsoleLauncher
🧹 Removal of deprecated APIs

docs.junit.org/6.0.0/releas...
JUnit Release Notes
docs.junit.org
September 30, 2025 at 10:10 AM
EqualsVerifier 4.1.1 is out!

It fixes an issue with classes that extend Enum

Check it out: github.com/jqno/equalsv...

#java
github.com
September 22, 2025 at 8:37 AM
EqualsVerifier 4.1 is out!

It adds the method withResettablePrefabValues, which allows you to have values that are re-inintialized after each check that EqualsVerifier runs internally. Handy for values that mutate when they're used.

See github.com/jqno/equalsv...

#java
github.com
September 2, 2025 at 6:12 PM
Looks like I'll have to update my blog soon: there's a new player in town 😄
August 27, 2025 at 6:45 AM
Reposted by Jan Ouwens
So, here is my new #java side-project:

jdtfmt - a Java #formatter for the command line.
* Can be paired with #spotless (both use jdt).
* fast (native)

github.com/bmarwell/jdt...

Thanks to @jqno.nl for the inspiration, @mthmulders.bsky.social for #graalvm hints and @bdemers.io for encouraging me 😀
GitHub - bmarwell/jdtfmt: jdtfmt is an opinionated java source code formatter for the command line
jdtfmt is an opinionated java source code formatter for the command line - bmarwell/jdtfmt
github.com
August 26, 2025 at 9:31 AM
And EqualsVerifier 4.0.9 is out, too!

Sometimes you introduce a bug while fixing one... 🤦🏻‍♂️

Check it out at github.com/jqno/equalsv...

#java
github.com
August 22, 2025 at 11:19 AM
EqualsVerifier 4.0.8 is out!

It fixes an issue with abstract sealed types that add state and need `Warning.NULL_FIELDS` suppressed.

Check it out at github.com/jqno/equalsv...

#java
github.com
August 22, 2025 at 8:59 AM
Yes let's hide the important stuff, thanks GitHub
August 20, 2025 at 7:35 AM
Somehow, Microsoft Outlook has found a way to make GitHub notification mails even more annoying than they already were
August 6, 2025 at 12:34 PM
EqualsVerifier 4.0.7 is out!

It fixes a bug with file path separators on Windows when using forPackage()

See github.com/jqno/equalsv...

#java
github.com
July 30, 2025 at 8:39 AM
EqualsVerifier 4.0.6 is out!

JPA entities with lazy fields must use their getters in equals. EqualsVerifier checks this but can't do it if the getter is final. It now throws an error if the getter is final instead of silently skipping the check.

Check it out: github.com/jqno/equalsv...

#java
github.com
July 18, 2025 at 7:53 AM
I know Kotlin is the cool, hip thing these days, but the mysterious ways it generates bytecode for some of its syntactic sugar features makes my life as EqualsVerifier maintainer pretty difficult in ways that Scala never did
July 14, 2025 at 6:39 PM
EqualsVerifier 4.0.5 is out!

It fixes a regression when testing relaxed equals relations.

Check it out at github.com/jqno/equalsv...

#java
github.com
July 7, 2025 at 6:25 PM
I _love_ the idea of self-hosting things.

But when you self-host, you're always on-call for the things you self-host.

I _hate_ being on-call.

So I'm at an impasse....
July 6, 2025 at 5:48 PM