<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Testing on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/category/testing/</link><description>Recent content in Testing on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 22 Jun 2026 08:46:05 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/category/testing/index.xml" rel="self" type="application/rss+xml"/><item><title>Foojay Podcast #99: Testing the Untestable: LLM Security for Java Developers with Tiberius</title><link>https://foojayio.github.io/website/today/foojay-podcast-99/</link><pubDate>Mon, 22 Jun 2026 06:54:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-99/</guid><description>&lt;p&gt;Your AI-powered Java application is live in production. But have you actually tested whether it can be jailbroken or manipulated into leaking data it should never reveal? In this episode, Iryna Dohndorf walks us through Tiberius, an open-source security testing library for LLM applications in Java, and explains why everything you know about unit testing needs a rethink when non-determinism is part of the design.&lt;/p&gt;
&lt;h2 id="h2-0-youtube"&gt;YouTube&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/7bBcTzeevEo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Tiberius: A Security Testing Framework for LLM Applications in Java</title><link>https://foojayio.github.io/website/today/tiberius-a-security-testing-framework-for-llm-applications-in-java/</link><pubDate>Thu, 04 Jun 2026 20:09:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/tiberius-a-security-testing-framework-for-llm-applications-in-java/</guid><description>&lt;p&gt;&lt;em&gt;How do you write a regression test for a system that is non-deterministic by design?&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;The Problem {#h2-0-1-the-problem}&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;Large Language Models have moved from research artifacts to production infrastructure. Java applications are embedding them into customer-facing services via Spring Boot, and e.g. LangChain4J &amp;mdash; for document summarization, customer support, healthcare assistance, and financial guidance, to name just a few. The deployment surface is growing faster than the security tooling.&lt;/p&gt;
&lt;p&gt;The vulnerability landscape is empirically well-established. Horlacher, Vifian, and Zagidullina (2026) &lt;strong&gt;[4]&lt;/strong&gt; red-teamed &lt;code&gt;gpt-oss-20b&lt;/code&gt; and found that adversarial techniques achieved alarmingly high Attack Success Rates, while non-adversarial probing exposed pervasive stereotypical defaults &amp;mdash; both consistent across English and Swiss German. Their conclusion: &lt;em&gt;&amp;ldquo;current alignment mechanisms have not fully resolved jailbreaks and inherent bias, posing critical challenges for automated decision-making.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Eliminating Flaky Tests to End World Hunger</title><link>https://foojayio.github.io/website/today/eliminating-flaky-tests-to-end-world-hunger/</link><pubDate>Thu, 23 Apr 2026 09:02:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/eliminating-flaky-tests-to-end-world-hunger/</guid><description>&lt;p&gt;Rita Mae Brown once said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Insanity&lt;/strong&gt; is doing the same thing over and over again and expecting different results.​&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;However, everyone has at least once experienced a test that failed and then passed in the next run without changing the code or the environment. In software engineering, we don&amp;rsquo;t call it insanity; we call such unpredictable failures &lt;strong&gt;flaky tests&lt;/strong&gt;. At first, they may seem like minor problems, but like clutter in a junk drawer, they become worse over time if you never take care of them.&lt;/p&gt;</description></item><item><title>Introducing BoxLings! An interactive teacher for BoxLang and TDD/BDD</title><link>https://foojayio.github.io/website/today/introducing-boxlings-an-interactive-teacher-for-boxlang-and-tdd-bdd/</link><pubDate>Thu, 09 Apr 2026 08:48:57 +0000</pubDate><guid>https://foojayio.github.io/website/today/introducing-boxlings-an-interactive-teacher-for-boxlang-and-tdd-bdd/</guid><description>&lt;p&gt;We believe the best way to learn a programming language is by writing code &amp;mdash; real code, with real feedback, and real tests. That&amp;rsquo;s exactly why we built &lt;strong&gt;BoxLings&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Inspired by the beloved &lt;a href="https://github.com/rust-lang/rustlings" target="_blank" rel="noopener noreferrer"&gt;rustlings&lt;/a&gt;
 project, &lt;strong&gt;BoxLings&lt;/strong&gt; is an interactive CLI tool that teaches you &lt;strong&gt;BoxLang&lt;/strong&gt; through hands-on exercises. You read failing tests, fix broken code, and level up &amp;mdash; one exercise at a time.&lt;/p&gt;
&lt;p&gt;Oh, and the whole thing is written in BoxLang itself. 🥊 Dogfooding at its finest.&lt;/p&gt;</description></item><item><title>TestBox 7: Real-Time Feedback, a Browser-Based IDE, and Modern Testing Workflows on the JVM</title><link>https://foojayio.github.io/website/today/testbox-7-real-time-feedback-a-browser-based-ide-and-modern-testing-workflows-on-the-jvm/</link><pubDate>Tue, 24 Mar 2026 16:58:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/testbox-7-real-time-feedback-a-browser-based-ide-and-modern-testing-workflows-on-the-jvm/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/testbox-7-real-time-feedback-a-browser-based-ide-and-modern-testing-workflows-on-the-jvm/testbox-7-1-700x467.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;TestBox 7.x focuses on improving testing workflows for BoxLang and CFML applications. This release introduces improvements to the &lt;strong&gt;BoxLang CLI runner&lt;/strong&gt; , real-time &lt;strong&gt;streaming test execution via SSE&lt;/strong&gt; , &lt;strong&gt;dry run&lt;/strong&gt; capabilities, a browser-based &lt;strong&gt;TestBox RUN&lt;/strong&gt; interface, and several developer experience enhancements.&lt;/p&gt;
&lt;p&gt;Check out the what&amp;rsquo;s new here: &lt;a href="https://testbox.ortusbooks.com/readme/release-history/whats-new-with-7.0.0" target="_blank" rel="noopener noreferrer"&gt;https://testbox.ortusbooks.com/readme/release-history/whats-new-with-7.0.0&lt;/a&gt;
&lt;/p&gt;
&lt;h4 id="testbox-run-a-browser-ide-for-your-tests"&gt;TestBox RUN: A Browser IDE for Your Tests&lt;/h4&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/testbox-7-real-time-feedback-a-browser-based-ide-and-modern-testing-workflows-on-the-jvm/image-700x155.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;The centerpiece of TestBox 7 is &lt;strong&gt;TestBox RUN&lt;/strong&gt; : a self-hosted, single-page web app (&lt;code&gt;bx/tests/index.bxm&lt;/code&gt;) that you drop into any &lt;strong&gt;BoxLang&lt;/strong&gt; project and open in a browser. No build toolchain. No external service. Just BoxLang.&lt;/p&gt;</description></item><item><title>How to Customize JaCoCo Report Styling in Your Java Project</title><link>https://foojayio.github.io/website/today/how-to-customize-jacoco-report-styling-in-your-java-project/</link><pubDate>Fri, 13 Feb 2026 13:10:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-customize-jacoco-report-styling-in-your-java-project/</guid><description>&lt;p&gt;JaCoCo is the go-to code coverage tool for Java projects. It integrates seamlessly with Maven, generates detailed HTML reports, and works out of the box. But let&amp;rsquo;s be honest &amp;mdash; the default reports look like they were designed in 2008, because they were.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re publishing coverage reports as part of your project documentation (on GitHub Pages, for example), you probably want them to match your site&amp;rsquo;s look and feel. The good news: it&amp;rsquo;s entirely possible. The bad news: JaCoCo offers zero built-in support for CSS customization.&lt;/p&gt;</description></item><item><title>Testing Emails with Testcontainers and Mailpit</title><link>https://foojayio.github.io/website/today/testing-emails-with-testcontainers-and-mailpit/</link><pubDate>Thu, 29 Jan 2026 08:38:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/testing-emails-with-testcontainers-and-mailpit/</guid><description>&lt;p&gt;Testing email functionality is often painful. SMTP servers are external, tests become slow or flaky, and local setups differ from CI environments. As a result, many teams either mock the mail sender or skip proper email tests completely.&lt;/p&gt;
&lt;p&gt;Both approaches are unsatisfying. Mocking does not test real behavior, and shared SMTP servers introduce hidden dependencies. What we really want is a real SMTP server that runs locally and in CI, is fully isolated per test run, and allows us to inspect sent emails easily.&lt;/p&gt;</description></item><item><title>Flaky Tests: a journey to beat them all</title><link>https://foojayio.github.io/website/today/flaky-tests-a-journey-to-beat-them-all/</link><pubDate>Tue, 13 Jan 2026 13:00:07 +0000</pubDate><guid>https://foojayio.github.io/website/today/flaky-tests-a-journey-to-beat-them-all/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Sleep is not a synchronization primitive.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Every test engineer, eventually&lt;/p&gt;
&lt;h2 id="h2-0-what-s-a-flaky-test"&gt;What&amp;rsquo;s a flaky test?&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;flaky test&lt;/strong&gt; is a test that sometimes passes and sometimes fails without any code changes. They&amp;rsquo;re the by‑product of non‑determinism: timing, concurrency, eventual consistency, network hiccups, clock drift, resource contention, and (our favorite) &lt;strong&gt;tests leaking state across runs&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://kestra.io" target="_blank" rel="noopener noreferrer"&gt;Kestra&lt;/a&gt;
 is an open-source declarative orchestration platform designed to run, coordinate, and monitor large-scale, event-driven workflows. It is built to handle parallelism, asynchronous execution, and distributed systems at scale, exactly the kind of environment where determinism is hard and flaky tests tend to emerge.&lt;/p&gt;</description></item><item><title>JC-AI Newsletter #7</title><link>https://foojayio.github.io/website/today/jc-ai-newsletter-7/</link><pubDate>Tue, 14 Oct 2025 05:35:01 +0000</pubDate><guid>https://foojayio.github.io/website/today/jc-ai-newsletter-7/</guid><description>&lt;p&gt;&lt;strong&gt;Fourteen days have passed, and it is time to present a fresh collection of readings that could influence developments in the field of artificial intelligence.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Beyond focused tutorials that can enhance your understanding of AI applications, this newsletter concentrates on Hallucination, Java Code Generation, Testing, Agentic System Architecture and LLM benchmarking methodologies designed to ensure models accuracy and competency in handling complex contextual information.&lt;/p&gt;
&lt;p&gt;The world influenced by LLM is changing very quickly, let&amp;rsquo;s start&amp;hellip;&lt;/p&gt;</description></item><item><title>AI-Driven Testing Best Practices</title><link>https://foojayio.github.io/website/today/ai-driven-testing-best-practices/</link><pubDate>Mon, 26 May 2025 08:06:15 +0000</pubDate><guid>https://foojayio.github.io/website/today/ai-driven-testing-best-practices/</guid><description>&lt;h2 id="h2-0-so-ai-can-write-tests-now-cool-but"&gt;&lt;strong&gt;So, AI Can Write Tests Now? Cool, But&amp;hellip;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;AI assisted coding tools are everywhere now, helping with autocomplete, suggesting fixes, and sometimes writing surprisingly large blocks of code. A hot topic is using generative AI to generate tests automatically &amp;ndash; unit, integration, e2e, etc.&lt;/p&gt;
&lt;p&gt;The idea&amp;rsquo;s definitely appealing. Who wouldn&amp;rsquo;t want an AI to help crank out tests, bump up those coverage numbers, and maybe save us from some of the testing grind? It sounds like a fast track to better feedback and tackling that mountain of untested code.&lt;/p&gt;</description></item><item><title>Mutation Testing in Rust</title><link>https://foojayio.github.io/website/today/mutation-testing-in-rust/</link><pubDate>Wed, 09 Apr 2025 12:39:50 +0000</pubDate><guid>https://foojayio.github.io/website/today/mutation-testing-in-rust/</guid><description>&lt;p&gt;I&amp;rsquo;ve been a big fan of &lt;a href="https://en.wikipedia.org/wiki/Mutation_testing" target="_blank" rel="noopener noreferrer"&gt;Mutation Testing&lt;/a&gt;
 since I discovered &lt;a href="https://pitest.org/" target="_blank" rel="noopener noreferrer"&gt;PIT&lt;/a&gt;
. As I dive deeper into Rust, I wanted to check the state of mutation testing in Rust.&lt;/p&gt;
&lt;h2 id="h2-0-starting-with-cargo-mutants"&gt;Starting with &lt;code&gt;cargo-mutants&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;I found two crates for mutation testing in Rust:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mutants.rs/" target="_blank" rel="noopener noreferrer"&gt;cargo-mutants&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;and &lt;a href="https://github.com/llogiq/mutagen" target="_blank" rel="noopener noreferrer"&gt;mutagen&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;mutagen&lt;/code&gt; hasn&amp;rsquo;t been maintained for three years, while &lt;a href="https://github.com/sourcefrog/cargo-mutants" target="_blank" rel="noopener noreferrer"&gt;cargo-mutants&lt;/a&gt;
 is still under active development.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve ported the sample code from my previous Java code to Rust:&lt;/p&gt;</description></item><item><title>Pull request testing on Kubernetes: testing locally and on GitHub workflows</title><link>https://foojayio.github.io/website/today/pull-request-testing-on-kubernetes-testing-locally-and-on-github-workflows/</link><pubDate>Sun, 16 Mar 2025 17:32:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/pull-request-testing-on-kubernetes-testing-locally-and-on-github-workflows/</guid><description>&lt;p&gt;Imagine an organization with the following practices:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Commits code on GitHub&lt;/li&gt;
&lt;li&gt;Runs its CI/CD pipelines with GitHub Actions&lt;/li&gt;
&lt;li&gt;Runs its production workload on Kubernetes&lt;/li&gt;
&lt;li&gt;Uses Google Cloud&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A new engineer manager arrives and asks for the following:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;On every PR, run integration tests in a Kubernetes cluster similar to the production one.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It sounds reasonable.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Engineering manager: I want #integrationtests to run on the app deployed on #Cloud infra for each #GitHub PR ✅&lt;/p&gt;</description></item><item><title>Pull Request testing on Kubernetes: Working with GitHub Actions and GKE</title><link>https://foojayio.github.io/website/today/pull-request-testing-on-kubernetes-working-with-github-actions-and-gke/</link><pubDate>Sun, 16 Mar 2025 15:44:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/pull-request-testing-on-kubernetes-working-with-github-actions-and-gke/</guid><description>&lt;p&gt;I&amp;rsquo;m continuing my series on running the test suite for each Pull Request on Kubernetes. In the &lt;a href="https://blog.frankel.ch/pr-testing-kubernetes/1/" target="_blank" rel="noopener noreferrer"&gt;previous post&lt;/a&gt;
, I laid the groundwork for our learning journey: I developed a basic JVM-based CRUD app, tested it locally using Testcontainers, and tested it in a GitHub workflow with a GitHub service container.&lt;/p&gt;
&lt;p&gt;This week, I will raise the ante to run the end-to-end test in the target Kubernetes environment. For this, I&amp;rsquo;ve identified gaps that I&amp;rsquo;ll implement in this blog post:&lt;/p&gt;</description></item><item><title>Thinking differently about testing</title><link>https://foojayio.github.io/website/today/thinking-differently-about-testing/</link><pubDate>Mon, 27 Jan 2025 07:26:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/thinking-differently-about-testing/</guid><description>&lt;h3 id="h3-0-10x-insights-on-a-different-view-of-quality-assurance"&gt;10x Insights on a different view of quality assurance&lt;/h3&gt;
&lt;p&gt;I&amp;rsquo;ve given a few talks about 10x developers, or rather 10x professionals and been involved in process (re)engineering for many teams and projects.&lt;/p&gt;
&lt;p&gt;However much you learn about people and their roles - there&amp;rsquo;s always something new to discover.&lt;/p&gt;
&lt;p&gt;In fact, it is amazing how often your worldview is blinkered, how often there&amp;rsquo;s a different way to do or think about some aspect of your life or your career.&lt;/p&gt;</description></item><item><title>Run true-to-production tests on your Java applications</title><link>https://foojayio.github.io/website/today/true-to-production-testing-java-apps/</link><pubDate>Tue, 24 Sep 2024 11:48:46 +0000</pubDate><guid>https://foojayio.github.io/website/today/true-to-production-testing-java-apps/</guid><description>&lt;p&gt;As supported by the &lt;a href="https://foojayio.github.io/website/today/creating-cloud-native-java-applications-with-the-12-factor-app-methodology/" title="12 factor"&gt;12 factor&lt;/a&gt;
 and &lt;a href="https://developer.ibm.com/articles/creating-a-12-factor-application-with-open-liberty/" title="15 factor app" target="_blank" rel="noopener noreferrer"&gt;15 factor app&lt;/a&gt;
 methodologies, in application development, we&amp;rsquo;ve come to realize just how important it is to test our applications in a true-to-production environment before releasing them to consumers. This helps us to mitigate potential failures and spot bugs that could appear in production but be missed in testing due to environmental differences and ensure we have high confidence in our applications being deployed to production environments. But, traditionally, developers have struggled with replicating an application&amp;rsquo;s production environment locally.&lt;/p&gt;</description></item><item><title>Browserless Testing of Vaadin Applications with Karibu Testing</title><link>https://foojayio.github.io/website/today/browserless-testing-of-vaadin-applications-with-karibu-testing/</link><pubDate>Mon, 09 Sep 2024 06:27:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/browserless-testing-of-vaadin-applications-with-karibu-testing/</guid><description>&lt;p&gt;I&lt;strong&gt;n modern web development, testing is essential for ensuring the reliability and performance of applications. For developers working with Vaadin, one of the best testing tools is Karibu Testing. This testing framework stands out for its ability to run browserless testing, offering several advantages over traditional end-to-end testing approaches, such as Selenium, Playwright, or Cypress.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This article will highlight the benefits of browserless testing with Karibu Testing and how it compares to the end-to-end testing approach (E2E).&lt;/p&gt;</description></item><item><title>How does it feel to test a compiler?</title><link>https://foojayio.github.io/website/today/how-does-it-feel-to-test-a-compiler/</link><pubDate>Thu, 08 Aug 2024 06:47:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-does-it-feel-to-test-a-compiler/</guid><description>&lt;p&gt;&lt;strong&gt;Hi, my name is Alex. I work as a QA engineer on the &lt;a href="https://kotlinlang.org/docs/native-overview.html" title="Kotlin/Native" target="_blank" rel="noopener noreferrer"&gt;Kotlin/Native&lt;/a&gt;
 team. I&amp;rsquo;m often asked by friends and colleagues what it&amp;rsquo;s like to test a compiler, so I decided to write an article about it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll briefly talk about my path to compiler testing, the Kotlin/Native compiler, the specifics of the tasks, the tools I use, and the knowledge that helps me in my work.&lt;/p&gt;
&lt;p&gt;I graduated with a bachelor&amp;rsquo;s and master&amp;rsquo;s degree in Software Engineering and then spent ten years in backend automation testing, including testing email backends (IMAP, POP3 protocols, email storage system, etc.), leading a testing team, and building test processes and test automation from scratch.&lt;/p&gt;</description></item><item><title>Foojay Podcast #52 from JCON in Cologne!</title><link>https://foojayio.github.io/website/today/foojay-podcast-52/</link><pubDate>Mon, 10 Jun 2024 09:32:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-52/</guid><description>&lt;p&gt;This is part 4 of the JCON interviews!&lt;/p&gt;
&lt;p&gt;In this episode, we have 5 new guests for you.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We start with garbage collectors and Intelligence Cloud, a tool created by Azul to find out which of your code is actually used in production and which dependencies are known to have vulnerabilities. My colleague Gerrit Grunwald was at JCON to give a talk about these subjects.&lt;/li&gt;
&lt;li&gt;With Balkrishna Rawool we dove into Virtual Threads, a very interesting topic as concurrency and threads can be challenging&amp;hellip;&lt;/li&gt;
&lt;li&gt;Piotr Przybyl came to JCON to give a talk about Test Containers and how to test your application in an environment that is similar to your production environment. Another important topic related to testing is Flaky Tests. How do you handle tests that only fail from time to time and make your whole test report unreliable?&lt;/li&gt;
&lt;li&gt;François Martin had a talk about this subject, and he came to the conference together with Annelore Egger, who was one of the many volunteers.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/9q7kSibmVBA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Software Testing as a Debugging Tool</title><link>https://foojayio.github.io/website/today/software-testing-as-a-debugging-tool/</link><pubDate>Wed, 15 May 2024 07:43:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/software-testing-as-a-debugging-tool/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="#the-intersection-of-debugging-and-testing"&gt;The Intersection of Debugging and Testing&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="#unit-tests"&gt;Unit Tests&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#integration-tests"&gt;Integration Tests&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#coverage"&gt;Coverage&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-debugfix-cycle"&gt;The Debug-Fix Cycle&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#composing-tests-with-debuggers"&gt;Composing Tests with Debuggers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#testdriven-development"&gt;Test-Driven Development&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#final-word"&gt;Final Word&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Debugging is not just about identifying errors&amp;mdash;it&amp;rsquo;s about instituting a reliable process for ensuring software health and longevity. In this post we discuss the role of software testing in debugging, including foundational concepts and how they converge to improve software quality.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/yap509UZz6M?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;br /&gt;
&lt;p&gt;As a side note, if you like the content of this and the other posts in this series check out my &lt;a href="https://www.amazon.com/dp/1484290410/" target="_blank" rel="noopener noreferrer"&gt;Debugging book&lt;/a&gt;
 that covers &lt;strong&gt;t&lt;/strong&gt; his subject. If you have friends that are learning to code I&amp;rsquo;d appreciate a reference to my &lt;a href="https://www.amazon.com/Java-Basics-Practical-Introduction-Full-Stack-ebook/dp/B0CCPGZ8W1/" target="_blank" rel="noopener noreferrer"&gt;Java Basics book.&lt;/a&gt;
 If you want to get back to Java after a while check out my &lt;a href="https://www.amazon.com/Java-21-Explore-cutting-edge-features/dp/9355513925/" target="_blank" rel="noopener noreferrer"&gt;Java 8 to 21 book&lt;/a&gt;
&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Tips for reading code</title><link>https://foojayio.github.io/website/today/tips-for-reading-code/</link><pubDate>Tue, 26 Mar 2024 11:46:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/tips-for-reading-code/</guid><description>&lt;p&gt;&lt;strong&gt;As developers, we read code more than we write it. When adding new features or fixing bugs, we first need to understand existing code, so we can make the right changes in the right place.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When reading code inside the IDE, &lt;a href="https://www.jetbrains.com/idea/" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA&lt;/a&gt;
 helps us to read and understand code by providing helpful features like syntax highlighting and inlay hints. But there are more features to help us understand a piece of code.&lt;/p&gt;</description></item><item><title>Foojay Podcast #43: Modern Java Testing</title><link>https://foojayio.github.io/website/today/foojay-podcast-43/</link><pubDate>Mon, 26 Feb 2024 08:03:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-43/</guid><description>&lt;p&gt;As developers, we all want to write bug free and high quality code. Writing tests is a crucial part to achieve this.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s explore the art of ensuring robust and bug-free code in the Java ecosystem.&lt;/p&gt;
&lt;p&gt;Whether you&amp;rsquo;re a seasoned developer or just starting out, there&amp;rsquo;s a lot you can learn from the experts in this podcast about testing methodologies, tools, and best practices, empowering you to write reliable Java applications.&lt;/p&gt;</description></item><item><title>Java Flight Recording and Analysis with Azul Mission Control</title><link>https://foojayio.github.io/website/today/java-flight-recording-and-analysis-with-azul-mission-control/</link><pubDate>Thu, 25 Jan 2024 07:59:42 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-flight-recording-and-analysis-with-azul-mission-control/</guid><description>&lt;p&gt;&lt;strong&gt;Java Flight Recording (JFR) is a Java Virtual Machine (JVM) profiling and diagnostics tool. It enables you to collect and analyze data regarding the performance and behavior of a Java application. As JFR is included in the JVM, there is no need for additional tools or installations to make recordings of your applications.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;By utilizing JFR, you gain valuable insights into the runtime behavior of your Java applications. It helps you to optimize performance, identify and troubleshoot issues, and ensure better overall reliability. JFR is designed with very low overhead, allowing its use in production environments with minimal impact on the performance of your application.&lt;/p&gt;</description></item><item><title>Soft Assertions - testing kindly</title><link>https://foojayio.github.io/website/today/soft-assertions-testing-kindly/</link><pubDate>Fri, 19 Jan 2024 10:17:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/soft-assertions-testing-kindly/</guid><description>&lt;p&gt;Given it&amp;rsquo;s the advent of a new year, I thought let&amp;rsquo;s start with something nice and fun that can make live more enjoyable for everyone.&lt;/p&gt;
&lt;p&gt;As developers, we write testcases all the time to help us in our development process, and to help us detect potential regressions in the future.&lt;/p&gt;
&lt;p&gt;Now ideally we want our testcases to be as efficient as possible, and ideally to require as few reruns as possible. And this is where Soft Assertions come into play.&lt;/p&gt;</description></item><item><title>[Unit] Testing Supabase in Kotlin using Test Containers - PART 2</title><link>https://foojayio.github.io/website/today/unit-testing-supabase-in-kotlin-using-test-containers-part-2/</link><pubDate>Wed, 13 Dec 2023 08:37:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/unit-testing-supabase-in-kotlin-using-test-containers-part-2/</guid><description>&lt;p&gt;&lt;em&gt;TL;DR : You can run a full Supabase instance inside Test Containers quite easily. &lt;a href="https://github.com/jlengrand/supabase-testcontainers-kotlin?ref=lengrand.fr" target="_blank" rel="noopener noreferrer"&gt;See this repository&lt;/a&gt;
.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://foojayio.github.io/website/today/unit-testing-supabase-in-kotlin/"&gt;In my last article&lt;/a&gt;
, I was listing a few attempts I had done at running tests against my Kotlin Supabase application. The way the Supabase-Kt library is built makes it hard to mock, and I ended up building a minimal Docker Compose setup that was mimicking a Supabase instance.&lt;/p&gt;
&lt;p&gt;In this second part, we&amp;rsquo;re gonna push the madness further and actually run a FULL SUPABASE instance locally, still using &lt;a href="https://testcontainers.com/?ref=lengrand.fr" target="_blank" rel="noopener noreferrer"&gt;Test Containers&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Testing Spring Boot JMS with ActiveMQ Artemis and Testcontainers</title><link>https://foojayio.github.io/website/today/testing-spring-boot-jms-with-activemq-artemis-and-testcontainers/</link><pubDate>Tue, 12 Dec 2023 07:55:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/testing-spring-boot-jms-with-activemq-artemis-and-testcontainers/</guid><description>&lt;p&gt;&lt;strong&gt;Currently, I&amp;rsquo;m teaching JMS with Spring Boot at the University of Applied Science in Bern, Switzerland. We use &lt;a href="https://activemq.apache.org/components/artemis/" target="_blank" rel="noopener noreferrer"&gt;Apache ActiveMQ Artemis&lt;/a&gt;
 as the JMS message broker. But how can we test our Spring Boot application?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="h2-0-testcontainers-to-the-rescue"&gt;Testcontainers to the Rescue&lt;/h2&gt;
&lt;p&gt;Currently, there is no &lt;a href="https://java.testcontainers.org%24/" target="_blank" rel="noopener noreferrer"&gt;Testcontainers Java&lt;/a&gt;
 module for ActiveMQ Artemis. As you can see in the &lt;a href="https://github.com/testcontainers/testcontainers-java" target="_blank" rel="noopener noreferrer"&gt;Testcontainers GitHub repository&lt;/a&gt;
, there is an active activemq branch that may be released soon. But in the meantime, we need another solution.&lt;/p&gt;</description></item><item><title>[Unit] Testing Supabase in Kotlin using Test Containers</title><link>https://foojayio.github.io/website/today/unit-testing-supabase-in-kotlin/</link><pubDate>Wed, 15 Nov 2023 16:36:01 +0000</pubDate><guid>https://foojayio.github.io/website/today/unit-testing-supabase-in-kotlin/</guid><description>&lt;p&gt;&lt;strong&gt;In this article, I&amp;rsquo;ll dive into several methods I&amp;rsquo;ve been looking into to unit test a Kotlin application using Supabase and why I finally decided to go for a Docker Compose / Test Containers solution.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;TL;DR : The easiest way I found to test my database service is to mimick Supabase using Docker Compose and Test Containers. &lt;a href="https://github.com/jlengrand/supabase-mock-demo-kotlin?ref=lengrand.fr" target="_blank" rel="noopener noreferrer"&gt;Here&amp;rsquo;s the code&lt;/a&gt;
&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In case you don&amp;rsquo;t know it, I&amp;rsquo;m a big fan of &lt;a href="https://supabase.com/?ref=lengrand.fr" target="_blank" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt;
. I love that they&amp;rsquo;re a viable alternative to Firebase. I love that they&amp;rsquo;re &lt;a href="https://github.com/supabase/supabase/blob/master/apps/docs/public/img/supabase-architecture.png?ref=lengrand.fr" target="_blank" rel="noopener noreferrer"&gt;built on top of Open-Source&lt;/a&gt;
 pieces. I love &lt;a href="https://supabase.com/blog/chatgpt-supabase-docs?ref=lengrand.fr" target="_blank" rel="noopener noreferrer"&gt;how innovative they are&lt;/a&gt;
, and &lt;a href="https://github.com/supabase/postgres_lsp?ref=lengrand.fr" target="_blank" rel="noopener noreferrer"&gt;how much they give back to the community&lt;/a&gt;
. And as you already know it, I love &lt;a href="https://kotlinlang.org/?ref=lengrand.fr" target="_blank" rel="noopener noreferrer"&gt;Kotlin&lt;/a&gt;
 as well.&lt;/p&gt;</description></item><item><title>OpenAPI Generator: From YAML to JetBrains HTTP Client</title><link>https://foojayio.github.io/website/today/creating-an-openapi-generator-from-scratch-from-yaml-to-jetbrains-http-client/</link><pubDate>Fri, 10 Nov 2023 10:41:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-an-openapi-generator-from-scratch-from-yaml-to-jetbrains-http-client/</guid><description>&lt;h3 id="h3-0-in-this-article-i-ll-be-implementing-an-openapi-generator-from-scratch-so-you-can-too-we-ll-be-creating-a-very-simple-generator-for-the-jetbrains-http-client"&gt;&lt;strong&gt;In this article, I&amp;rsquo;ll be implementing an OpenAPI generator from scratch so you can too! We&amp;rsquo;ll be creating a very simple generator for the Jetbrains HTTP Client.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://lengrand.fr/content/images/2023/11/F9_7HZZW4AEvcHF.jpeg" alt="Creating an OpenAPI generator from scratch : From YAML to JetBrains HTTP Client" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;This is the online version of the article with the same name I wrote for the Dutch Java Magazine.&lt;/p&gt;
&lt;p&gt;In the previous edition of the magazine, we discussed how the &lt;a href="https://www.jetbrains.com/help/idea/http-client-reference.html?ref=lengrand.fr" target="_blank" rel="noopener noreferrer"&gt;JetBrains HTTP Client&lt;/a&gt;
 could be used to run HTTP Queries, automate them and even use them in your CI/CD pipelines. Just like &lt;a href="https://www.postman.com/?ref=lengrand.fr" target="_blank" rel="noopener noreferrer"&gt;Postman&lt;/a&gt;
, but text based and can be part of your source code. Pretty cool.&lt;/p&gt;</description></item><item><title>Book Review: Get Your Hands Dirty on Clean Architecture</title><link>https://foojayio.github.io/website/today/book-review-get-your-hands-dirty-on-clean-architecture/</link><pubDate>Sat, 23 Sep 2023 12:00:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-get-your-hands-dirty-on-clean-architecture/</guid><description>&lt;p&gt;&lt;strong&gt;I recently completed reading &amp;ldquo;Get Your Hands Dirty on Clean Architecture&amp;rdquo; authored by Tom Hombergs and I deem it an indispensable resource for developers aspiring to produce clean code and implement the Hexagonal Architecture. Consequently, I have resolved to compose a review to aid numerous individuals who harbor a fervent interest in technology!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Title:&lt;/strong&gt; Get Your Hands Dirty on Clean Architecture&lt;br&gt;
&lt;strong&gt;Author:&lt;/strong&gt; Tom Hombergs&lt;br&gt;
&lt;strong&gt;Genre:&lt;/strong&gt; Technical, Software Architecture&lt;/p&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/book-review-get-your-hands-dirty-on-clean-architecture/GetYourHandsDirtyOnCleanArchitecture.jpg" alt="CleanArchitecture" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;In the constantly changing realm of software development, architectural principles hold a crucial position in determining the triumph and sustainability of a project. The book authored by Tom Hombergs, titled &amp;ldquo;Get Your Hands Dirty on Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java,&amp;rdquo; is an exceptional guide that illuminates the importance of clean architecture, while also offering practical perspectives on its implementation through the Java programming language.&lt;/p&gt;</description></item><item><title>ArchUnit - test your architecture</title><link>https://foojayio.github.io/website/today/archunit-testing-your-architecture/</link><pubDate>Thu, 14 Sep 2023 14:09:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/archunit-testing-your-architecture/</guid><description>&lt;p&gt;&lt;a href="https://www.archunit.org/" target="_blank" rel="noopener noreferrer"&gt;ArchUnit&lt;/a&gt;
 is a library that allows us to test our architecture (layering/slicing/(naming) conventions, and more).&lt;/p&gt;
&lt;p&gt;Why does this matter? It&amp;rsquo;s all about leaving a legacy and safeguarding it. During the lifecycle of a project, people might shift roles, join the team, &amp;hellip; And might not be aware of the conventions within the team/organization.&lt;/p&gt;
&lt;p&gt;Testing your architecture is both an aid to ascertain that the architecture is being implemented consistently and also makes it easier for people onboarding to get a grasp of what that agreed architecture is.&lt;/p&gt;</description></item><item><title>Load testing - shoot your application with Gatling</title><link>https://foojayio.github.io/website/today/load-testing-shoot-your-application-with-gatling/</link><pubDate>Wed, 06 Sep 2023 09:32:29 +0000</pubDate><guid>https://foojayio.github.io/website/today/load-testing-shoot-your-application-with-gatling/</guid><description>&lt;h2 id="_what_is_load_testing"&gt;What is load testing?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Load testing entails testing how our application performs under a significant load so we can be certain it behaves as expected when there&amp;rsquo;s an influx of users.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Or at least so we know what it can cope it, and at what point we might potentially need to take action.&lt;/p&gt;
&lt;p&gt;After all, it might not (only) be the code that&amp;rsquo;s the issue.&lt;/p&gt;
&lt;p&gt;This is a process that requires quite a bit of cooperation between testers, developers, and those using it to properly determine the scenarios, and a smooth &amp;amp; swift feedback loop is important to make sure our solutions work properly. And it will likely be some of the most expensive tests given both the people involved and the need for a testing environment that&amp;rsquo;s representative of the production configuration.&lt;/p&gt;</description></item><item><title>Testable Code: A Journey Through Consideration and Refactoring</title><link>https://foojayio.github.io/website/today/writing-testable-code-a-journey-through-consideration-and-refactoring/</link><pubDate>Wed, 30 Aug 2023 06:47:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/writing-testable-code-a-journey-through-consideration-and-refactoring/</guid><description>&lt;p&gt;&lt;strong&gt;In an ideal world, every piece of code we write would be easily testable, clearly understood, and perfectly maintainable. However, reality often presents us with complex problems and solutions that aren&amp;rsquo;t always straightforward. Writing testable code sometimes requires a thoughtful approach, deep consideration of the use cases, and even refactoring to ensure that the code is robust and fully tested.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="h2-0-the-challenge-of-testing"&gt;The Challenge of Testing&lt;/h2&gt;
&lt;p&gt;Imagine a scenario where you need to create an Amazon S3 client based on different credential providers. At first glance, the implementation might seem simple. However, when it comes to writing unit tests for this code, challenges arise.&lt;/p&gt;</description></item><item><title>Three Key Elements for Your Flaky Test Remediation Approach</title><link>https://foojayio.github.io/website/today/three-key-elements-to-incorporate-into-your-flaky-test-remediation-approach/</link><pubDate>Tue, 29 Aug 2023 13:32:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/three-key-elements-to-incorporate-into-your-flaky-test-remediation-approach/</guid><description>&lt;p&gt;&lt;strong&gt;Flaky tests pose substantial challenges due to their unpredictable and inconsistent nature. Effectively addressing them requires a multi-faceted approach that involves the effective integration of strategy, process and resource alignment, and a deep understanding of flaky test causality. This post will walk you through this approach.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note! This post is part of a three-part series. If you&amp;rsquo;re not sure it&amp;rsquo;s worth remediating flaky tests, read &lt;a href="https://foojayio.github.io/website/today/seven-reasons-you-should-not-ignore-flaky-tests/"&gt;Part 1: Seven Reasons You Should Not Ignore Flaky Tests&lt;/a&gt;
. Read Part 2 to understand the keys to identifying and tracking flaky tests, called 5 Ways to Use Gradle Enterprise to Identify and Manage Flaky Tests. Now, let&amp;rsquo;s explore my multi-faceted approach to fixing flaky tests.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Local Development Made Simpler with Testcontainers Desktop app</title><link>https://foojayio.github.io/website/today/testing-and-local-development-made-simpler-with-testcontainers-desktop-app/</link><pubDate>Mon, 21 Aug 2023 07:52:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/testing-and-local-development-made-simpler-with-testcontainers-desktop-app/</guid><description>&lt;p&gt;&lt;strong&gt;Being able to release new features quickly is a must-have capability in today&amp;rsquo;s competitive world. In order to release your software quickly and often you should have CI/CD infrastructure that can automatically build, test, and release our software with minimal to no human intervention. A comprehensive automated test suite is the key to release your software with confidence.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://testcontainers.com" target="_blank" rel="noopener noreferrer"&gt;Testcontainers&lt;/a&gt;
 libraries help you to write integration tests using the real dependencies with the ease of writing unit tests. Let us take a quick look at how Testcontainers enables you to write tests that give confidence in your software.&lt;/p&gt;</description></item><item><title>Pitest: Do You Test Your Tests?</title><link>https://foojayio.github.io/website/today/pitest-do-you-test-your-tests/</link><pubDate>Tue, 15 Aug 2023 14:32:55 +0000</pubDate><guid>https://foojayio.github.io/website/today/pitest-do-you-test-your-tests/</guid><description>&lt;h2 id="_what_is_pitest"&gt;What is Pitest?&lt;/h2&gt;
&lt;p&gt;Pitest is a library that helps us do mutation testing.&lt;/p&gt;
&lt;p&gt;Mutation testing is a process in which random variations of the code under test are generated.&lt;/p&gt;
&lt;p&gt;Hence, our tests will run against variants of the code that we&amp;rsquo;re intending to test.&lt;/p&gt;
&lt;p&gt;If the test fails, the mutation is killed, if it still passes it lives. So in subsequent runs, you will see this mutation once again. Surviving mutations may indicate issues with our test set since application code changes should lead to different end results, and thus to failing tests. So to further reduce the survivors we will need to enhance our test cases and/or add extra.&lt;/p&gt;</description></item><item><title>Seven Reasons You Should Not Ignore Flaky Tests</title><link>https://foojayio.github.io/website/today/seven-reasons-you-should-not-ignore-flaky-tests/</link><pubDate>Tue, 04 Jul 2023 07:02:44 +0000</pubDate><guid>https://foojayio.github.io/website/today/seven-reasons-you-should-not-ignore-flaky-tests/</guid><description>&lt;p&gt;Imagine the scenario: you have good automated test coverage of your application code; you run your tests locally; and you have a Continuous Integration (CI) environment which runs your tests regularly.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;re doing everything right, right?&lt;/p&gt;
&lt;p&gt;Except&amp;hellip; sometimes tests fail, and you&amp;rsquo;re not sure why. When you run the test locally, or a second time in the same environment, they pass. Whether they pass or fail doesn&amp;rsquo;t seem to be related to any code changes.&lt;/p&gt;</description></item><item><title>Debugging OpenJDK Tests in VSCode (Without Losing Your Mind)</title><link>https://foojayio.github.io/website/today/debugging-openjdk-tests-in-vscode-without-losing-your-mind/</link><pubDate>Mon, 26 Jun 2023 11:27:55 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-openjdk-tests-in-vscode-without-losing-your-mind/</guid><description>&lt;p&gt;Consider you want to debug a test case of the JDK like &lt;a href="https://github.com/openjdk/jdk/tree/master/test/hotspot/jtreg/serviceability/AsyncGetCallTrace" target="_blank" rel="noopener noreferrer"&gt;serviceability/AsyncGetCallTrace&lt;/a&gt;
. This test, and many others, are implemented using the &lt;em&gt;Regression Test Harness for the JDK&lt;/em&gt; (jtreg):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;jtreg&lt;/code&gt; is the test harness used by the JDK test framework. This framework is intended primarily for regression tests. It can also be used for unit tests, functional tests, and even simple product tests &amp;ndash; in other words, just about any type of test except a conformance test, which belong in a TCK.&lt;/p&gt;</description></item><item><title>Time Zone and Currency Database in JDK</title><link>https://foojayio.github.io/website/today/time-zone-and-currency-database-in-jdk/</link><pubDate>Sat, 08 Apr 2023 13:39:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/time-zone-and-currency-database-in-jdk/</guid><description>&lt;p&gt;There is a saying that you aren&amp;rsquo;t a real developer until you have done programming involving dates, times, daylight savings, and time zones.&lt;/p&gt;
&lt;p&gt;Luckily the JDK contains multiple methods to assist you.&lt;/p&gt;
&lt;p&gt;Related to this topic, it is essential to understand that each new JDK release includes a new version of the time zone and currency database.&lt;/p&gt;
&lt;p&gt;As we will discover, you can get correct output by just switching to the most up-to-date version of Java &amp;ndash; without changing code!&lt;/p&gt;</description></item><item><title>Exhaustive JUnit5 Testing: Combinations, Permutations, Products</title><link>https://foojayio.github.io/website/today/exhaustive-junit5-testing-with-combinations-permutations-and-products/</link><pubDate>Wed, 08 Mar 2023 10:08:21 +0000</pubDate><guid>https://foojayio.github.io/website/today/exhaustive-junit5-testing-with-combinations-permutations-and-products/</guid><description>&lt;p&gt;Unit testing constitutes an integral part of the process of providing high-quality software.&lt;/p&gt;
&lt;p&gt;But, how can one write tests covering all variants of several operations?&lt;/p&gt;
&lt;p&gt;Read this article and learn how to use JUnit5 in conjunction with combinations, permutations, and products.&lt;/p&gt;
&lt;h3 id="h3-0-test-support-libraries"&gt;Test Support Libraries&lt;/h3&gt;
&lt;p&gt;There are many libraries that make testing better in different aspects. Here are some of them:&lt;/p&gt;
&lt;h4 id="agitar-one"&gt;Agitar One&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://www.agitar.com/solutions/products/software_agitation.html" title="Agitator" target="_blank" rel="noopener noreferrer"&gt;Agitator&lt;/a&gt;
 automatically creates dynamic test cases, synthesizes sets of input data, and analyzes the results.&lt;/p&gt;</description></item><item><title>Foojay Podcast #14: Debugging Tools and Skills for Fun and Profit</title><link>https://foojayio.github.io/website/today/foojay-podcast-14/</link><pubDate>Mon, 20 Feb 2023 08:29:01 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-14/</guid><description>&lt;p&gt;Let&amp;rsquo;s talk about debugging and observability.&lt;/p&gt;
&lt;p&gt;We work with debugging all the time, but how well do we know this common practice?&lt;/p&gt;
&lt;p&gt;Observability, monitoring, and debugging at scale for your production&amp;hellip;&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ozcC3scY0Ig?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1--odcast-pps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://open.spotify.com/show/6CpTfgn9LirzJGAtc4ICdQ" target="_blank" rel="noopener noreferrer"&gt;Spotify&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/be/podcast/foojay-io-the-friends-of-openjdk/id1652281304" target="_blank" rel="noopener noreferrer"&gt;Apple Podcasts&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;And most others&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-1-guests"&gt;Guests&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A lot of rubber ducks&lt;/li&gt;
&lt;li&gt;Johannes Bechberger
&lt;ul&gt;
&lt;li&gt;JVM and profiler developer&lt;/li&gt;
&lt;li&gt;Worked on the JDWP protocol and profiling&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/parttimenerd" target="_blank" rel="noopener noreferrer"&gt;https://github.com/parttimenerd&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/parttimen3rd" target="_blank" rel="noopener noreferrer"&gt;https://twitter.com/parttimen3rd&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@parttimenerd" target="_blank" rel="noopener noreferrer"&gt;https://mastodon.social/@parttimenerd&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mostlynerdless.de/blog/2023/01/19/asyncgetstacktrace-a-better-stack-trace-api-for-the-jvm/" target="_blank" rel="noopener noreferrer"&gt;AsyncGetStackTrace: A better Stack Trace API for the JVM&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mostlynerdless.de/blog/2022/12/27/a-short-primer-on-java-debugging-internals/" target="_blank" rel="noopener noreferrer"&gt;A short primer on Java debugging internals&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Marit van Dijk
&lt;ul&gt;
&lt;li&gt;Developer Advocate at JetBrains&lt;/li&gt;
&lt;li&gt;&lt;a href="https://maritvandijk.com/" target="_blank" rel="noopener noreferrer"&gt;https://maritvandijk.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/MaritvanDijk77" target="_blank" rel="noopener noreferrer"&gt;https://twitter.com/MaritvanDijk77&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@maritvandijk" target="_blank" rel="noopener noreferrer"&gt;https://mastodon.social/@maritvandijk&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ties van de Ven
&lt;ul&gt;
&lt;li&gt;Software Engineer @ JDriven, Coach @ Jcore&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.tiesvandeven.nl/" target="_blank" rel="noopener noreferrer"&gt;https://www.tiesvandeven.nl/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/ties_ven" target="_blank" rel="noopener noreferrer"&gt;https://twitter.com/ties_ven&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.jdriven.com/2017/10/6-steps-to-help-you-debug-your-application/" target="_blank" rel="noopener noreferrer"&gt;6 Steps to help you debug your application&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-2-host"&gt;Host&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Shai Almog
&lt;ul&gt;
&lt;li&gt;Author of &amp;ldquo;&lt;a href="https://www.amazon.com/dp/1484290410/" target="_blank" rel="noopener noreferrer"&gt;Practical Debugging at Scale&lt;/a&gt;
&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://debugagent.com/" target="_blank" rel="noopener noreferrer"&gt;https://debugagent.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mastodon.social/@debugagent" target="_blank" rel="noopener noreferrer"&gt;https://mastodon.social/@debugagent&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/debugagent" target="_blank" rel="noopener noreferrer"&gt;https://twitter.com/debugagent&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-3-producer"&gt;Producer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Frank Delporte
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://foojay.social/@frankdelporte" target="_blank" rel="noopener noreferrer"&gt;https://foojay.social/@frankdelporte&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/frankdelporte" target="_blank" rel="noopener noreferrer"&gt;https://twitter.com/frankdelporte&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-4-content"&gt;Content&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;00'00 Intro and music&lt;/li&gt;
&lt;li&gt;00'24 About the topic of this podcast&lt;/li&gt;
&lt;li&gt;00'58 Introduction of the guests and host&lt;/li&gt;
&lt;li&gt;05'14 Debugging with IntelliJ IDEA and discoverability of tools
&lt;ul&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/watch?v=59RC8gVPlvk&amp;amp;list=PLPZy-hmwOdEUWF85MuwrKV8YVWLmZW4ZA" target="_blank" rel="noopener noreferrer"&gt;Debugger playlist&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/watch?v=OQcyAtukps4" target="_blank" rel="noopener noreferrer"&gt;Profiling tools&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;YouTube: &lt;a href="https://www.youtube.com/watch?v=TDpbt4thECc" target="_blank" rel="noopener noreferrer"&gt;Profiling live stream&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;13'27 JDWP protocol
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dzone.com/articles/remote-debugging-java-applications-with-jdwp" target="_blank" rel="noopener noreferrer"&gt;DZone: Remote Debugging Java Applications With JDWP&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/psa-the-risks-of-remote-jdwp-debugging/"&gt;Foojay: PSA: The Risks of Remote JDWP Debugging&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/a-short-primer-on-java-debugging-internals/"&gt;Foojay: A Short Primer on Java Debugging Internals&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;19'43 Exception breakpoints
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/exception-breakpoint-that-doesnt-suck-and-a-real-use-case-for-method-breakpoints/"&gt;Foojay: Exception Breakpoint that Doesn&amp;rsquo;t Suck and a Real Use Case for Method Breakpoints&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;20'34 External debugging tools
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://rubberduckdebugging.com/" target="_blank" rel="noopener noreferrer"&gt;https://rubberduckdebugging.com/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;26'55 Observability
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://istio.io/latest/about/service-mesh/" target="_blank" rel="noopener noreferrer"&gt;https://istio.io/latest/about/service-mesh/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh" target="_blank" rel="noopener noreferrer"&gt;https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openjdk.org/jeps/435" target="_blank" rel="noopener noreferrer"&gt;https://openjdk.org/jeps/435&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;37'58 What information should you look for while debugging&lt;/li&gt;
&lt;li&gt;45'46 Be aware of tunnel vision while debugging&lt;/li&gt;
&lt;li&gt;49'33 What to do if you don&amp;rsquo;t know where to search for the bug
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/docs/git-bisect" target="_blank" rel="noopener noreferrer"&gt;https://git-scm.com/docs/git-bisect&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/today/understand-the-root-cause-of-regressions-with-git-bisect/"&gt;Foojay: External Debugging Tools 2: git bisect&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;57'05 Outro&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>JTest: Roll Out Your Own JUnit-Like Testing Framework</title><link>https://foojayio.github.io/website/today/jtest-roll-your-own-junit-like-testing-framework/</link><pubDate>Tue, 17 Jan 2023 16:11:50 +0000</pubDate><guid>https://foojayio.github.io/website/today/jtest-roll-your-own-junit-like-testing-framework/</guid><description>&lt;p&gt;In this interactive tutorial and educational project, you&amp;rsquo;ll be helped in your understanding of the following.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A basic insight into &lt;a href="https://github.com/junit-team/junit4" target="_blank" rel="noopener noreferrer"&gt;JUnit&lt;/a&gt;
 internals.&lt;/li&gt;
&lt;li&gt;The usage of Java annotations and reflection.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You are given minimum &lt;a href="https://github.com/wlnirvana/jtest" target="_blank" rel="noopener noreferrer"&gt;starter code&lt;/a&gt;
 (~20 loc), and will have to develop a simple yet self-contained framework that can be used to write real-world unit tests.&lt;/p&gt;
&lt;p&gt;Are you ready? Let&amp;rsquo;s go! 🚀&lt;/p&gt;
&lt;h2 id="h2-0-task-0-the-big-picture"&gt;Task 0: The Big Picture&lt;/h2&gt;
&lt;p&gt;Before getting your hands dirty, it is a good idea to get a big picture of what you will code up.&lt;/p&gt;</description></item><item><title>Why I Don't do TDD</title><link>https://foojayio.github.io/website/today/why-i-dont-do-tdd/</link><pubDate>Fri, 02 Dec 2022 08:59:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-i-dont-do-tdd/</guid><description>&lt;p&gt;I recently gave a talk about debugging for the London Java Community. During the Q&amp;amp;A part of the talk, someone asked me about my approach to Test Driven Development. In the past I looked at that practice in a more positive light. Writing lots of tests. How can that be bad?&lt;/p&gt;
&lt;p&gt;But as time moved on, I see it in a different light. I see it as a very limited tool that has very specific use cases. It doesn&amp;rsquo;t fit into the type of projects I build and often hinders the fluid processes it&amp;rsquo;s supposed to promote. But let&amp;rsquo;s backtrack for a second. I really liked &lt;a href="https://buttondown.email/hillelwayne/archive/i-have-complicated-feelings-about-tdd-8403/" target="_blank" rel="noopener noreferrer"&gt;this post&lt;/a&gt;
 that separates the types and problems in TDD. But let&amp;rsquo;s simplify it a bit, let&amp;rsquo;s clarify that every PR should have good coverage. This isn&amp;rsquo;t TDD. It&amp;rsquo;s just good programming.&lt;/p&gt;</description></item><item><title>API Mocking: Essential and Redundant</title><link>https://foojayio.github.io/website/today/api-mocking-essential-and-redundant/</link><pubDate>Fri, 11 Nov 2022 08:13:23 +0000</pubDate><guid>https://foojayio.github.io/website/today/api-mocking-essential-and-redundant/</guid><description>&lt;p&gt;I love contradictions where both states of truth can work at the same time.&lt;/p&gt;
&lt;p&gt;Case in point is this tweet about mocking from the other week:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/api-mocking-essential-and-redundant/Screen-Shot-2022-10-25-at-14.53.38-700x263.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://twitter.com/mcsee1/status/1582762075289374720" target="_blank" rel="noopener noreferrer"&gt;If you use mocks, you are not testing&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My answer was:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/api-mocking-essential-and-redundant/Screen-Shot-2022-10-25-at-14.55.58-700x457.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[Mocks help assert limited fixed functionality and they do it FAST.&lt;/p&gt;
&lt;p&gt;Which is what unit tests are about. Mocks are an essential part of a wider quality strategy. Otherwise you will spend your time in integration test churn.&lt;/p&gt;</description></item><item><title>Comparative Evaluation Azul Zulu Prime vs. OpenJDK</title><link>https://foojayio.github.io/website/today/best-practice-comparative-evaluation-of-jdk-setups-azul-zulu-prime-vs-openjdk/</link><pubDate>Fri, 07 Oct 2022 08:51:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/best-practice-comparative-evaluation-of-jdk-setups-azul-zulu-prime-vs-openjdk/</guid><description>&lt;p&gt;In today&amp;rsquo;s Java ecosystem, you have a wide range of possible runtimes. Choosing between them can have a huge impact on the capabilities or performance of your environments and applications.&lt;/p&gt;
&lt;p&gt;In this article, you will learn about best practices for &lt;strong&gt;comparative evaluations between JDK setups&lt;/strong&gt; , whether they be different configurations in a single JDK or comparing &lt;a href="https://www.azul.com/products/prime/" target="_blank" rel="noopener noreferrer"&gt;Azul Zulu Prime Builds of OpenJDK (Azul Zulu Prime)&lt;/a&gt;
 to OpenJDK itself.&lt;/p&gt;
&lt;p&gt;By following this guide, you will be able to establish credible evidence that Azul Zulu Prime improves aspects of application behavior to a degree that justifies using it within your organization.&lt;/p&gt;</description></item><item><title>Am I Testing the Right Way?</title><link>https://foojayio.github.io/website/today/am-i-testing-the-right-way/</link><pubDate>Tue, 04 Oct 2022 18:24:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/am-i-testing-the-right-way/</guid><description>&lt;h2 id="h2-0-two-unit-testing-approaches-explained"&gt;Two unit-testing approaches explained!&lt;/h2&gt;
&lt;p&gt;Pick any topic around testing and there will be at least two very contrary approaches that seem to be at odds.&lt;/p&gt;
&lt;p&gt;One of the many points of discussion around unit testing, and in particular TDD, are the question around what good boundaries for tests are.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So the question is: Should you unit test each method on your classes or should you only unit test the public interfaces of a given feature or component?&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Faster Integration Tests with Reusable Testcontainers</title><link>https://foojayio.github.io/website/today/faster-integration-tests-with-reusable-testcontainers/</link><pubDate>Wed, 17 Aug 2022 11:05:05 +0000</pubDate><guid>https://foojayio.github.io/website/today/faster-integration-tests-with-reusable-testcontainers/</guid><description>&lt;p&gt;In my job, I often need integration tests against a &lt;a href="https://neo4j.com" target="_blank" rel="noopener noreferrer"&gt;Neo4j&lt;/a&gt;
 database. My software is written in Java, and so is Neo4j. Neo4j is embeddable, too. So, in theory, I could just depend on the embedded version, open a connection, test my stuff and call it a day. It would not be a different engine, it would be - at least from a query-engine and planer perspective - the same thing, in contrast to using an embedded SQL database as a drop-in for PostgresQL for example.&lt;/p&gt;</description></item><item><title>How to Develop and Test an Automated CI/CD Workflow with Cassandra</title><link>https://foojayio.github.io/website/today/how-to-develop-and-test-an-automated-ci-cd-workflow-with-cassandra/</link><pubDate>Fri, 03 Jun 2022 08:52:14 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-develop-and-test-an-automated-ci-cd-workflow-with-cassandra/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;In this post, we&amp;rsquo;ll show you how to develop a CI/CD workflow using Apache Cassandra&lt;/em&gt; ™&lt;em&gt;with a GitHub Actions runner. See for yourself how much time and effort you can save by deploying Cassandra cloud-natively while you test and deploy your cloud-native applications!&lt;/em&gt;&lt;/strong&gt;{#6067}&lt;/p&gt;
&lt;p&gt;If you have projects that depend on &lt;a href="https://cassandra.apache.org/_/index.html" target="_blank" rel="noopener noreferrer"&gt;Apache Cassandra&lt;/a&gt;
™ and you want to develop an automated continuous integration and continuous delivery (CI/CD) flow, you&amp;rsquo;re going to need to create Cassandra clusters dynamically for your tests to make sure that your app works after each code change. &lt;a href="https://www.datastax.com/" target="_blank" rel="noopener noreferrer"&gt;DataStax&lt;/a&gt;
 does this every day &amp;mdash; we run Cassandra in &lt;a href="https://kubernetes.io/" target="_blank" rel="noopener noreferrer"&gt;Kubernetes&lt;/a&gt;
 to power &lt;a href="https://astra.dev/38xbdFI" target="_blank" rel="noopener noreferrer"&gt;Astra DB&lt;/a&gt;
. And, we use continuous testing of our Cassandra deployments to make sure Astra DB works reliably.{#8d10}&lt;/p&gt;</description></item><item><title>JUnit 5 Display Names</title><link>https://foojayio.github.io/website/today/junit-5-display-names/</link><pubDate>Fri, 10 Dec 2021 12:31:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/junit-5-display-names/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/junit-5-introduction/"&gt;Part 1&lt;/a&gt;
 of this series, we looked at several annotations used in JUnit 5. We covered test methods as well as lifecycle methods.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/junit-5-testing-basics/"&gt;Part 2&lt;/a&gt;
, we looked at the basics of testing using JUnit 5. We covered test annotations such as marking a test method and asserting. We saw how a test method could be tagged and how assumptions can be used. We finally wrapped up with test execution ordering mechanisms.&lt;/p&gt;</description></item><item><title>JUnit 5 Testing Basics</title><link>https://foojayio.github.io/website/today/junit-5-testing-basics/</link><pubDate>Fri, 03 Dec 2021 12:29:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/junit-5-testing-basics/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/junit-5-introduction/"&gt;Part 1&lt;/a&gt;
 of this series of articles, we looked at several annotations used in JUnit5. We covered test methods as well as lifecycle methods.&lt;/p&gt;
&lt;p&gt;This article will share examples of a JUnit test which makes use of a few of these annotations.&lt;/p&gt;
&lt;h2 id="h2-0-testing"&gt;Testing&lt;/h2&gt;
&lt;h3 id="h3-1-marking-a-method-as-a-test"&gt;Marking a method as a Test&lt;/h3&gt;
&lt;p&gt;Tests in JUnit5 are annotated with the &lt;strong&gt;@Test&lt;/strong&gt; annotation. &lt;em&gt;Unlike prior versions of JUnit, the JUnit5 &lt;code&gt;@Test&lt;/code&gt; annotation does not have any attributes. Prior versions supported extensions via attributes, while JUnit5 fosters a custom annotation based extension&lt;/em&gt; (more on this in a future article).&lt;/p&gt;</description></item><item><title>JUnit 5 Introduction</title><link>https://foojayio.github.io/website/today/junit-5-introduction/</link><pubDate>Fri, 26 Nov 2021 15:22:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/junit-5-introduction/</guid><description>&lt;p&gt;Code Katas are a great way of teaching programming practices. The effectiveness of a code kata is to &amp;ldquo;solve&amp;rdquo; something repeatedly in order to gain a &amp;ldquo;muscle memory&amp;rdquo; of sorts on the subject matter.&lt;/p&gt;
&lt;p&gt;Nothing stresses repeatability more than unit tests. Code Katas thus, in many cases can be associated with or run via unit tests.&lt;/p&gt;
&lt;p&gt;Many of us have been long used to JUnit 4 as a formidable unit testing framework. This article is not going to be a comparison between JUnit 4 and JUnit 5, but you will notice some differences as italicized text.&lt;/p&gt;</description></item></channel></rss>