{"ref":"artifact:endresshauser-infoserve-abap-utesthelp","page":"/artifacts/endresshauser-infoserve-abap-utesthelp","json":"/artifacts/endresshauser-infoserve-abap-utesthelp.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"endresshauser-infoserve-abap-utesthelp","name":"abap-utesthelp","artifact_type":"package","ecosystem":"abap","domain":"developer-experience","origin_ring":"independent","description":{"one_line":"Two helper classes for ABAP Unit tests: one verifies a domain constant class against its domain's fixed values, the other creates test doubles without naming the interface.","short":"Helper classes for ABAP Unit tests and test doubles","what_it_solves":"A domain constant class contains constants for each value of a domain, and `ZCL_UTESTHELP_DOMCONSTANT_TEST` is the parent class for the unit test that checks one against its domain. Its test methods verify that every constant is found in the domain's fixed values, that every fixed value has a constant, that no value repeats, that the class is abstract and that all constants have the same type. A subclass only implements `GET_CLASS_NAME`, and `DETERMINE_CLASS_NAME_FROM_TYPE` fills that in dynamically rather than hard-coding the name. The second class, `ZCL_UTESTHELP_TEST_DOUBLE_UTIL`, wraps the standard test double framework `CL_ABAP_TESTDOUBLE`: its `CREATE_TEST_DOUBLE` builds a double from an existing reference variable instead of the interface or class name passed in as a string, so an object can be renamed without adjusting the names in the tests."},"links":{"repo":"https://github.com/endresshauser-infoserve/abap-utesthelp"},"type_properties":{"placement":{"value":"in-host","sources":[{"url":"https://github.com/endresshauser-infoserve/abap-utesthelp","title":"endresshauser-infoserve/abap-utesthelp — README","checked":"2026-10-19","quote":"You can use class `ZCL_UTESTHELP_DOMCONSTANT_TEST` as a parent class for your domain constant class unit tests."}]}},"identity":{"license":"MIT"},"source_available":true,"provides":[{"capability":"capability:abap-unit-testing","what_it_does":"Supplies a parent test class that verifies a domain constant class against its domain's fixed values, and a utility that creates test doubles without hardcoding the interface or class name.","sources":[{"url":"https://github.com/endresshauser-infoserve/abap-utesthelp","title":"endresshauser-infoserve/abap-utesthelp — README","checked":"2026-10-19","quote":"This repository contains helpful classes for your unit tests."}]}],"lineage":[{"target":"artifact:sap-styleguides-clean-abap","kind":"inspired-by","source":{"url":"https://github.com/endresshauser-infoserve/abap-utesthelp","title":"endresshauser-infoserve/abap-utesthelp — README, Credit","checked":"2026-10-19","quote":"`ZCL_UTESTHELP_DOMCONSTANT_TEST` was inspired by an example from the [Clean ABAP styleguide](https://github.com/SAP/styleguides/blob/93499d0/clean-abap/sub-sections/Enumerations.md#prefer-classes-to-interfaces)."}}],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-14"},"maintainers":["actor:endresshauser-infoserve"],"contributors":["actor:conjuringcoffee"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"1 contributor, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-06, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"good","evidence":"1 test file"},{"label":"Docs","tier":"fair","evidence":"README 3 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":1,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name","stars":1,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2026-06-23","license_spdx":"MIT","org_owned":true,"default_branch":"main","created_at":"2023-09-18T12:55:37Z","open_prs":0,"tree_truncated":false,"test_files":1,"workflows":0,"other_ci":false,"readme_bytes":2928,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2023-09-18","last_commit":"2026-06-23","commits":6,"contributors":1,"readme_path":"README.md","readme_sha":"4dcb114ae52d890b5ab31f62f401079bf2521b31","repo_read":"2026-10-24"},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"github-releases","url":"https://github.com/endresshauser-infoserve/abap-utesthelp/releases"},"format":"github-releases","releases":[{"version":"1.1.0","date":"2026-06-23","date_source":"github","heading":"v1.1.0","url":"https://github.com/endresshauser-infoserve/abap-utesthelp/releases/tag/v1.1.0","sections":[],"hash":"8231b454f358481d"},{"version":"1.0.3","date":"2024-07-25","date_source":"github","heading":"v1.0.3","url":"https://github.com/endresshauser-infoserve/abap-utesthelp/releases/tag/v1.0.3","sections":[],"hash":"bd506fcd94d6ea7e"},{"version":"1.0.2","date":"2024-04-03","date_source":"github","heading":"v1.0.2","url":"https://github.com/endresshauser-infoserve/abap-utesthelp/releases/tag/v1.0.2","sections":[],"hash":"73a89071246112d0"},{"version":"1.0.1","date":"2024-04-03","date_source":"github","heading":"v1.0.1","url":"https://github.com/endresshauser-infoserve/abap-utesthelp/releases/tag/v1.0.1","sections":[],"hash":"31f3b43ad983b692"},{"version":"1.0.0","date":"2023-09-18","date_source":"github","heading":"v1.0.0","url":"https://github.com/endresshauser-infoserve/abap-utesthelp/releases/tag/v1.0.0","sections":[],"hash":"603c9b2204bd3c34"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:endresshauser-infoserve","name":"Endress+Hauser InfoServe GmbH+Co. KG","json":"/actors/endresshauser-infoserve.json"}],"contributors":[{"ref":"actor:conjuringcoffee","name":"ConjuringCoffee","json":"/actors/conjuringcoffee.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}