<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>XUnit on Artur Rios Lab</title><link>https://lab.artur-rios.tech/tags/xunit/</link><description>Recent content in XUnit on Artur Rios Lab</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 21 Oct 2026 19:30:00 +0000</lastBuildDate><atom:link href="https://lab.artur-rios.tech/tags/xunit/index.xml" rel="self" type="application/rss+xml"/><item><title>How I Develop APIs</title><link>https://lab.artur-rios.tech/dotnet/how-i-develop-apis/</link><pubDate>Wed, 21 Oct 2026 19:30:00 +0000</pubDate><guid>https://lab.artur-rios.tech/dotnet/how-i-develop-apis/</guid><description>&lt;p&gt;Every backend I build is an ASP.NET Core API, and they all look alike on&#10;purpose. When the structure is the same everywhere, I never have to remember&#10;where a thing lives, a new feature is a list of files to add rather than a&#10;design decision, and a test that fails points at one small piece of code.&lt;/p&gt;&#10;&lt;p&gt;This page describes that shape, using&#10;&lt;a href="https://docs.artur-rios.tech/heimdall-api/"&gt;Heimdall&lt;/a&gt; as the example&#10;throughout. Heimdall is my identity management API: people, applications,&#10;logins, two-factor authentication and permissions, for several client systems&#10;at once, each in its own scope. It is the largest API I have, so every pattern&#10;here has been tested against a real use case rather than a toy one. All code&#10;on this page is taken from it, trimmed only where noted.&lt;/p&gt;</description></item><item><title>The .NET Libraries I Reach For</title><link>https://lab.artur-rios.tech/dotnet/library-recommendations/</link><pubDate>Wed, 21 Oct 2026 13:20:00 +0000</pubDate><guid>https://lab.artur-rios.tech/dotnet/library-recommendations/</guid><description>&lt;p&gt;Every new .NET project starts with the same handful of decisions. How will I&#10;test it? Where does fake data come from? How do I validate input, survive a&#10;flaky dependency, export a spreadsheet, run something every night? The base&#10;class library answers some of these. For the rest, I have settled on a short&#10;list of NuGet packages that I add almost without thinking.&lt;/p&gt;&#10;&lt;p&gt;This page is that list, with the reasoning written down. For each library I&#10;explain what it is for, why I use it, show a small example and say when I&#10;would pick something else. A recommendation is only as good as what it&#10;leaves out, so I also flag what I would want to know before adding a&#10;dependency: licence, maintenance, breaking changes, and in two cases events&#10;that every user of the library should know about.&lt;/p&gt;</description></item></channel></rss>