<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Deep Dive on gotest</title><link>https://mvrahden.github.io/go-test/tags/deep-dive/</link><description>Recent content in Deep Dive on gotest</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 06 Sep 2026 10:37:08 +0200</lastBuildDate><atom:link href="https://mvrahden.github.io/go-test/tags/deep-dive/feed.xml" rel="self" type="application/rss+xml"/><item><title>Advanced Go Test Fixtures: Composition, Containers, Config</title><link>https://mvrahden.github.io/go-test/blog/advanced-fixture-patterns/</link><pubDate>Mon, 20 Jul 2026 00:00:00 +0000</pubDate><guid>https://mvrahden.github.io/go-test/blog/advanced-fixture-patterns/</guid><description>&lt;p&gt;A single fixture gets you started: start a thing, stop a thing, point your tests at it. Real projects need more. Fixtures that compose into dependency graphs, containers that survive flaky startup, per-test isolation that keeps parallel tests from stepping on each other, and configuration that adapts to each environment. These are the patterns that emerge when fixtures grow beyond a single struct with two hooks.&lt;/p&gt;
&lt;p&gt;If you are new to gotest fixtures, &lt;a href="https://mvrahden.github.io/go-test/blog/test-fixtures-in-go/"&gt;Test Fixtures in Go&lt;/a&gt; covers the fundamentals: struct types with lifecycle hooks, automatic dependency resolution, DAG-based ordering. &lt;a href="https://mvrahden.github.io/go-test/blog/shared-fixtures/"&gt;Sharing Test Fixtures Across Go Packages&lt;/a&gt; covers cross-package sharing through JSON state transfer and subprocess lifecycle management. This post assumes you have built your first fixture.&lt;/p&gt;</description></item><item><title>Sharing Test Fixtures Across Go Packages</title><link>https://mvrahden.github.io/go-test/blog/shared-fixtures/</link><pubDate>Sun, 19 Jul 2026 00:00:00 +0000</pubDate><guid>https://mvrahden.github.io/go-test/blog/shared-fixtures/</guid><description>&lt;p&gt;&lt;code&gt;go test&lt;/code&gt; compiles each package into a separate test binary and runs it as a separate OS process. That design buys you isolation, and it makes one thing structurally difficult: sharing a fixture &lt;em&gt;across&lt;/em&gt; packages. A Postgres container that &lt;code&gt;pkg/user&lt;/code&gt;, &lt;code&gt;pkg/order&lt;/code&gt;, and &lt;code&gt;pkg/billing&lt;/code&gt; all need. A Redis instance that three packages query. A schema migration that should run once for the entire test run, not once per package. Sharing any of these means crossing process boundaries.&lt;/p&gt;</description></item></channel></rss>