Testing

2026

AL Runner v2.2 and v2.3: Coverage, Quick Scripts, and a Watch Mode You Can Trust

Since the v2 cutover: code coverage for your AL test runs, running a snippet of AL without writing a codeunit for it, a watch mode that no longer reports fake failures mid-save, and about 130 fixes to places where the runner's behavior didn't match real BC. Plus shoutouts to the two AL developers whose bug reports drove most of them.

Weekly Recap: August 7-14

AL Runner shipped ~85 PRs closing correctness gaps and hardening the pipeline, bc-code-atlas's global_id now lets a self-hosted instance bridge into the public one to follow calls into Microsoft's base app, the AL Language Tests suite grew by answering AL Runner's own open questions, and the Linux fast lane got a week of real-world hardening.

AL Runner v2: What Feedback Told Me v1 Was Missing

v1 worked for the use cases it was built for. Companies actually using it told me that wasn't enough — most real extensions can't be unit tested at all without running against real Microsoft or ISV code. That feedback drove a clean v2 cut. It also changed how the runner fails: anything it can't support now throws loudly instead of quietly passing.

2024

Validate() – All Tables / All Fields / Always

Stefan Maroń and Christian Hovenbitzer argue at BC TechDays 2024 that Validate() should be the default in AL — not the exception — covering performance myths, chained validates, temp table pitfalls, and the cases where assignment is actually fine.

2023

My approach to custom APIs

When to use API Queries vs API Pages vs OData Bound Actions in Business Central — a practical approach to building readable, testable, and performant

Go Live Checklist

A look at the open-source GoLiveChecklisting app for Business Central — an extensible framework to script and validate data quality checks before going