<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on James Penning</title><link>https://jamespenning.dev/posts/</link><description>Recent content in Posts on James Penning</description><image><title>James Penning</title><url>https://jamespenning.dev/images/og-default.png</url><link>https://jamespenning.dev/images/og-default.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 27 Oct 2026 11:05:32 +0000</lastBuildDate><atom:link href="https://jamespenning.dev/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>What actually makes a test flaky?</title><link>https://jamespenning.dev/flaky-test-definition/</link><pubDate>Mon, 20 Aug 2018 00:00:00 +0000</pubDate><guid>https://jamespenning.dev/flaky-test-definition/</guid><description>Why an error and a failure are different test results, and why that matters when you call a test flaky.</description></item><item><title>Top 5 pitfalls writing integration tests</title><link>https://jamespenning.dev/top-5-pitfalls-writing-integration-tests/</link><pubDate>Mon, 12 Mar 2018 00:00:00 +0000</pubDate><guid>https://jamespenning.dev/top-5-pitfalls-writing-integration-tests/</guid><description>Five mistakes I kept making with integration tests, from writing too many to leaving artifacts behind.</description></item><item><title>My blog's CI runs on my home PC now</title><link>https://jamespenning.dev/my-blogs-ci-runs-on-my-home-pc/</link><pubDate>Tue, 27 Oct 2026 00:00:00 +0000</pubDate><guid>https://jamespenning.dev/my-blogs-ci-runs-on-my-home-pc/</guid><description>I burned through my GitHub Actions usage limit, so this blog now builds, checks and deploys on a self-hosted Windows runner on a PC that was already on 24/7. Here&amp;#39;s the setup, everything that broke, and why it was worth it.</description></item><item><title>NUnit's classic vs. constraint assertion models</title><link>https://jamespenning.dev/nunit-classic-vs-constraint-assertion-models/</link><pubDate>Mon, 14 May 2018 00:00:00 +0000</pubDate><guid>https://jamespenning.dev/nunit-classic-vs-constraint-assertion-models/</guid><description>Why NUnit&amp;#39;s constraint assertion model gives you better failure messages than the classic model.</description></item><item><title>TestCaseData with TestCaseSource to better organize your tests</title><link>https://jamespenning.dev/testcasedata-with-testcasesource-to-better-organize-your-tests/</link><pubDate>Mon, 15 Jan 2018 00:00:00 +0000</pubDate><guid>https://jamespenning.dev/testcasedata-with-testcasesource-to-better-organize-your-tests/</guid><description>Pair NUnit&amp;#39;s TestCaseData with TestCaseSource to move setup out of your tests and document each case.</description></item><item><title>Using .runsettings to configure your NUnit tests</title><link>https://jamespenning.dev/using-runsettings-to-configure-nunit-tests/</link><pubDate>Thu, 07 Dec 2017 00:00:00 +0000</pubDate><guid>https://jamespenning.dev/using-runsettings-to-configure-nunit-tests/</guid><description>Use a .runsettings file and TestContext.Parameters to pass configuration into NUnit integration tests without config-file templating.</description></item><item><title>Overview of the TestContext in NUnit. Part 2: CurrentContext</title><link>https://jamespenning.dev/test-context-part-2/</link><pubDate>Thu, 09 Nov 2017 00:00:00 +0000</pubDate><guid>https://jamespenning.dev/test-context-part-2/</guid><description>A closer look at TestContext.CurrentContext in NUnit: the current test, its result, working directories and the Randomizer.</description></item><item><title>Overview of the TestContext in NUnit. Part 1: Static properties and methods</title><link>https://jamespenning.dev/test-context-part-1/</link><pubDate>Tue, 07 Nov 2017 00:00:00 +0000</pubDate><guid>https://jamespenning.dev/test-context-part-1/</guid><description>A tour of NUnit&amp;#39;s TestContext static properties and methods: output, errors, progress, parameters, formatters and attachments.</description></item><item><title>Getting started with NUnit</title><link>https://jamespenning.dev/getting-started-with-nunit/</link><pubDate>Fri, 27 Oct 2017 00:00:00 +0000</pubDate><guid>https://jamespenning.dev/getting-started-with-nunit/</guid><description>Write and run your first NUnit unit test in C#, from installing the packages to reading the results.</description></item><item><title>My software testing reading list</title><link>https://jamespenning.dev/current-reading-list/</link><pubDate>Fri, 20 Oct 2017 00:00:00 +0000</pubDate><guid>https://jamespenning.dev/current-reading-list/</guid><description>Fourteen books on software testing I picked to build my testing library, and why two of them went to the top.</description></item></channel></rss>