bcquality/microsoft/knowledge/testing/ui-test-codeunit-naming.md
Michael Dieringer a4d85c3e9e Add 18 more community AL/BC patterns across appsource, data-modeling, error-handling, security, style, testing, ui, upgrade, and web-services
Second contribution from CURABIS ApS, generalized from patterns observed across real AppSource/PTE development. Cross-checked against the current microsoft/knowledge corpus before opening; several originally-drafted candidates were dropped as duplicates of existing files.
2026-09-21 22:42:49 +02:00

1.4 KiB

bc-version domain keywords technologies countries application-area
all
testing
ui-test
testpage
naming
suffix
codeunit
page-testing
al
w1
all

Suffix UI-layer test codeunits with _UT and never mix layers in one codeunit

Description

A test codeunit that drives pages through TestPage — opening pages, reading FactBox parts, triggering field OnValidate through the page — is testing a different layer than a codeunit that calls business-logic procedures directly. Readers need to know which layer a given test exercises without opening it, and a single codeunit that mixes both kinds of test hides that distinction: a failure could mean the logic broke, the page broke, or both.

Best Practice

Give any test codeunit that uses TestPage a _UT (Unit Test — UI layer) suffix, and keep it free of tests that call codeunit/table procedures directly. Keep the corresponding logic-only codeunit unsuffixed. Allocate the two codeunits adjacent object IDs so their relationship is visible in the object list.

See sample: ui-test-codeunit-naming.good.al.

Anti Pattern

A codeunit named without the _UT suffix that nonetheless contains TestPage calls, or — worse — one codeunit that mixes a direct logic-call test and a TestPage-driven test side by side. Either way, the codeunit's name no longer tells a reader which layer a failing test actually broke.

See sample: ui-test-codeunit-naming.bad.al.