<?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 Stefan Maron | Business Central &amp; AL Development</title><link>https://stefanmaron.com/tags/testing/</link><description>Recent content in Testing on Stefan Maron | Business Central &amp; AL Development</description><generator>Hugo -- gohugo.io</generator><language/><lastBuildDate>Tue, 08 Sep 2026 07:33:56 +0200</lastBuildDate><atom:link href="https://stefanmaron.com/tags/testing/index.xml" rel="self" type="application/rss+xml"/><item><title>AL Runner: A Weekend of Autonomous Agents, a Windows Cross-Check, and 59% of Microsoft's Tests Passing</title><link>https://stefanmaron.com/posts/al-runner-autonomous-agent-weekend/</link><pubDate>Tue, 08 Sep 2026 07:33:56 +0200</pubDate><guid>https://stefanmaron.com/posts/al-runner-autonomous-agent-weekend/</guid><description>I last wrote about AL Runner on September 3, covering the test suite that verifies its behavior against real BC . Since then I got funded for an additional Claude Max 20x subscription, dedicated specifically to AL Runner work. Combined with the Max 20x subscription I already had, that gave me a Max 40x usage window, and a token usage reset on Friday, September 5 made the whole thing available fresh going into the weekend.</description></item><item><title>AL Language Tests: An Executable Spec for How BC Actually Behaves</title><link>https://stefanmaron.com/posts/al-language-tests-executable-spec/</link><pubDate>Thu, 03 Sep 2026 06:00:00 +0200</pubDate><guid>https://stefanmaron.com/posts/al-language-tests-executable-spec/</guid><description>I&amp;rsquo;ve written a lot about AL Runner on this blog — most recently the Cronus data and mutation-testing update two days ago. What I haven&amp;rsquo;t written about is the repository that makes AL Runner trustworthy in the first place: BusinessCentral.AL.Language.Tests .
The problem it solves AL Runner is an emulator. It reimplements the AL language and a chunk of the BC platform in-memory so your tests run in seconds instead of the minute-plus it takes to spin up a real service tier.</description></item><item><title>AL Runner: Testing Against Real Cronus Data, Debugging Restored, and Mutation-Ready Coverage</title><link>https://stefanmaron.com/posts/al-runner-tests-against-cronus/</link><pubDate>Tue, 01 Sep 2026 18:30:00 +0200</pubDate><guid>https://stefanmaron.com/posts/al-runner-tests-against-cronus/</guid><description>I last wrote about AL Runner on August 20, covering v2.2 and v2.3. Seven releases have shipped since then, through today&amp;rsquo;s v2.10.0, and the headline one connects directly to the post I wrote this morning about bcdb : you can now point AL Runner at a real BC backup and test against the actual data in it, starting with the Cronus demo database every BC sandbox artifact ships with.
Testing against real Cronus data Up to now, AL Runner&amp;rsquo;s in-memory database started empty and stayed empty except for whatever your own test code inserted.</description></item><item><title>Weekly Recap: August 21-28</title><link>https://stefanmaron.com/posts/weekly-recap-2026-08-28/</link><pubDate>Fri, 28 Aug 2026 09:30:00 +0200</pubDate><guid>https://stefanmaron.com/posts/weekly-recap-2026-08-28/</guid><description>The feature side of AL Runner&amp;rsquo;s week — real Cronus data via --test-data, breakpoint debugging back via --dap, per-test coverage for mutation testing — is already its own post . This recap covers everything else that shipped in the same window: a CI incident and its fix in AL Runner, two real-world bugs in the Linux fast lane, a first update in two years for a browser extension, and a contribution to a project I don&amp;rsquo;t maintain.</description></item><item><title>Weekly Recap: August 14-21</title><link>https://stefanmaron.com/posts/weekly-recap-2026-08-21/</link><pubDate>Fri, 21 Aug 2026 09:30:00 +0200</pubDate><guid>https://stefanmaron.com/posts/weekly-recap-2026-08-21/</guid><description>Two posts went out on their own this week: I Can Turn Off My Code. I Can&amp;rsquo;t Turn Off Yours. on the 18th, making the case that whether a trigger needs to run shouldn&amp;rsquo;t be a compile-time guess when the platform can answer that question itself at runtime, and AL Runner v2.2 and v2.3 on the 20th, covering coverage reporting, inline execute, and a watch mode that stopped lying to you mid-save.</description></item><item><title>AL Runner v2.2 and v2.3: Coverage, Quick Scripts, and a Watch Mode You Can Trust</title><link>https://stefanmaron.com/posts/al-runner-coverage-execute-and-a-guard-that-worked/</link><pubDate>Thu, 20 Aug 2026 07:00:00 +0200</pubDate><guid>https://stefanmaron.com/posts/al-runner-coverage-execute-and-a-guard-that-worked/</guid><description>I last wrote about AL Runner on August 10, the day the v2 rewrite shipped — the tool that runs your AL unit and integration tests without spinning up a BC service tier. The weekly recap four days later covered the first round of follow-up fixes. This post covers what happened after that, through v2.3.1 on August 19: two new capabilities, a watch mode you can actually trust during a busy editing session, and roughly 130 fixes to places where the runner used to disagree with real Business Central.</description></item><item><title>Weekly Recap: August 7-14</title><link>https://stefanmaron.com/posts/weekly-recap-2026-08-14/</link><pubDate>Fri, 14 Aug 2026 09:30:00 +0200</pubDate><guid>https://stefanmaron.com/posts/weekly-recap-2026-08-14/</guid><description>Last Monday I published three posts at once — AL Runner v2 , BC on Linux and the AL-Go fast lane , and the bc-code-atlas intro . None of that stopped the week it was published. Here&amp;rsquo;s what happened across those repos (and a couple of new ones) since then.
The AL Runner: closing correctness gaps and hardening the pipeline Since the v2 cutover post , the runner shipped roughly 85 merged PRs in four days, most of them small, targeted fixes to places where the emulator&amp;rsquo;s behavior diverged from real BC.</description></item><item><title>AL Runner v2: What Feedback Told Me v1 Was Missing</title><link>https://stefanmaron.com/posts/al-runner-v2-emit-through-bc/</link><pubDate>Mon, 10 Aug 2026 07:00:00 +0200</pubDate><guid>https://stefanmaron.com/posts/al-runner-v2-emit-through-bc/</guid><description>Last time I wrote about AL Runner , it ran your AL unit tests without a service tier by transpiling AL to C#, renaming BC&amp;rsquo;s runtime types (NavRecord became MockRecord, and so on), and stubbing out anything it didn&amp;rsquo;t recognize. It worked. 3,400 tests passed.
Then the feedback started coming in from companies actually trying to use it, and it was consistent: the runner does what it says it does, for the use cases described.</description></item><item><title>Indirect Permissions in Business Central — What They Are and Why They Matter</title><link>https://stefanmaron.com/posts/indirect-permissions-bc-stream/</link><pubDate>Tue, 06 Aug 2024 09:00:00 +0100</pubDate><guid>https://stefanmaron.com/posts/indirect-permissions-bc-stream/</guid><description>Permissions in Business Central are one of those topics that seem simple on the surface until you hit a runtime error that has nothing to do with the permission sets you actually assigned. I ran into exactly that problem — and I decided to stream through it properly, live, including the things I got wrong along the way.
The full stream is on YouTube if you want to see every detour.</description></item><item><title>Reviewing Microsoft's AI Test Toolkit PR in BCApps — Guideline Fixes Live</title><link>https://stefanmaron.com/posts/reviewing-ai-test-toolkit-pr-bcapps-guideline-fixes/</link><pubDate>Wed, 03 Jul 2024 09:00:00 +0100</pubDate><guid>https://stefanmaron.com/posts/reviewing-ai-test-toolkit-pr-bcapps-guideline-fixes/</guid><description>The full stream is on YouTube if you want to watch along. The short version: Microsoft opened a pull request to add an AI Test Toolkit to the public BCApps repository , and I spent a stream going through it file by file, fixing AL guideline violations and trying to get a counter-PR merged.
The previous session I&amp;rsquo;d reviewed the PR and left individual comments on things I spotted. What I learned from that: if you click &amp;ldquo;Add comment&amp;rdquo; instead of &amp;ldquo;Start review&amp;rdquo;, GitHub sends one email per comment to everyone subscribed to the PR.</description></item><item><title>Validate() – All Tables / All Fields / Always</title><link>https://stefanmaron.com/posts/validate-all-tables-all-fields-always/</link><pubDate>Sun, 16 Jun 2024 09:00:00 +0100</pubDate><guid>https://stefanmaron.com/posts/validate-all-tables-all-fields-always/</guid><description>At BC TechDays 2024 in Antwerp, Christian Hovenbitzer and I gave a session with a deliberately provocative title: Validate() – all tables / all fields / always. The room was packed, which tells you this is something people have strong opinions about.
You can watch the full recording on YouTube if you want to follow along.
The short version of our argument: calling Validate() on a field should be your default.</description></item><item><title>Build a better way to catch errors (Part 1) - The BC Coding Stream</title><link>https://stefanmaron.com/posts/build-better-error-catching-part-1/</link><pubDate>Tue, 28 May 2024 09:00:00 +0100</pubDate><guid>https://stefanmaron.com/posts/build-better-error-catching-part-1/</guid><description>This stream started as a debugging session. I&amp;rsquo;d hit a problem in a real project: I needed to catch errors from field validations — including all the hidden commits that Validate can trigger — without leaving any trace in the database. I wanted to show the user what would go wrong before actually doing the thing. Turns out that&amp;rsquo;s harder than it sounds.
You can watch the full stream on YouTube .</description></item><item><title>My approach to custom APIs</title><link>https://stefanmaron.com/posts/myapproachtocustomapi/</link><pubDate>Tue, 04 Jul 2023 08:05:27 +0200</pubDate><guid>https://stefanmaron.com/posts/myapproachtocustomapi/</guid><description>Since I work together with our colleagues from the PowerPlatform team more frequently, one of my most regular tasks is, to create a new custom API. The default APIs from Business central are cool, but if you really want to achieve something, you might get to their limits real fast.
So I have been exposing tables and writing APIs quite a lot recently, and my approach to this has changed a bit over time.</description></item><item><title>Go Live Checklist</title><link>https://stefanmaron.com/posts/golivechecklist/</link><pubDate>Sat, 01 Jul 2023 00:33:39 +0200</pubDate><guid>https://stefanmaron.com/posts/golivechecklist/</guid><description>I am not sure if you where on BCTechDays 2023, or if you maybe already saw Jeremy&amp;rsquo;s session on YouTube already.
If not, have a look, its worth your time:
And from all the good stuff he talked about, I wanted to have a more detailed look at the GoLiveChecklist app he created. And since its all OpenSource, I just went to his github and checked it out.
The purpose of this app is, to script any kind of check you want to do, in your Business Central company, before you go live.</description></item></channel></rss>