Declaration Assertion
Verify codebase using Konsist API
Last updated
Verify codebase using Konsist API
Assertions are used to perform code base verification. This is the final step of Konsist verification preceded by scope creation (Create The Scope) and Declaration Filtering steps:
Konsist offers a variety of assertion methods. These can be applied to a list of KoDeclarations as well as a single declaration.
In the below snippet, the assertion (performed on the list of interfaces) verifies if every interface has a public visibility modifier.
koScope
.interfaces()
.assertTrue { it.hasPublicModifier() }The it parameter inside the assertTrue method represents a single declaration (single interface in this case). However, the assertion itself will be performed on every available interface. The last line in the assertTrue block will be evaluated as true or false providing the result for a given asset.
Each KoDeclaration comes with an API, comprising methods and properties, for verifying the declaration. Additionally, the Konsist API offers a text property for exceptional cases where the standard API falls short. This should be used as a last resort, and any issues encountered should be reported Getting Help.
The assertFalse is a negation of the assertTrue method. In the below snippet, the assertion (performed on the list of properties) verifies if none of the properties has the Inject annotation:
Konist
.scopeFromProject()
.properties()
.assertFalse {
it.hasAnnotationOf(Inject::class)
}This assertion verifies that the class does not contain any properties with public (an explicit public modifier) or default (implicit public modifier) modifiers:
This assertion helps to verify if the given list of declarations is empty.
This assertion helps to verify if the given list of declarations is not empty.
Assertions offer a set of parameters allowing to tweak the assertion behavior. You can adjust several settings, such as setting testName that helps with suppression (see Suppress Konsist Test).
You can also enable enhanced verification by setting strict argument to true:
The additionalMessage param allows to provision of additional messages that will be displayed with the failing test. This may be a more detailed description of the problem or a hint on how to fix the issue.
Last updated
Konist
.scopeFromProject()
.properties()
.assertFalse {
it.hasPublicOrDefaultModifier
}Konist
.scopeFromProject()
.classes()
.assertEmpty()Konist
.scopeFromProject()
.classes()
.assertNotEmpty()Konist
.scopeFromProject()
.classes()
.assertFalse(strict = true) { ... }Konist
.scopeFromProject()
.classes()
.assertFalse(additionalMessage = "Do X to fix the issue") { ... }