← ClaudeAtlas

fluent-assertlisted

Write and refactor Kotlin assertions with FluentAssert's AssertJ-backed `.assert()` extensions and `assertThrownBy`. Use when a project depends on `fluent-assert-core`, the user asks for FluentAssert, or the user asks to migrate direct AssertJ calls to FluentAssert; covers JUnit and Wow/SagaSpec tests, nullable values, supported JDK types, collections, time, futures, predicates, exceptions, recursive comparison, and custom `AssertProvider` types.
Ahoo-Wang/skills · ★ 3 · Testing & QA · score 76
Install: claude install-skill Ahoo-Wang/skills
# FluentAssert Use FluentAssert for Kotlin assertions in this repository and in downstream Kotlin test examples. Prefer the Kotlin extension style over direct AssertJ calls. ## Core Rule ```kotlin import me.ahoo.test.asserts.assert actual.assert().isEqualTo(expected) ``` Avoid `assertThat(actual)` in ordinary test code. FluentAssert keeps nullable receivers natural: ```kotlin val name: String? = null name.assert().isNull() ``` ## Common Patterns | Need | Pattern | |---|---| | Primitive/string/object | `value.assert().isEqualTo(expected)` | | Collection/list | `items.assert().hasSize(2).contains("a")` | | Map | `map.assert().hasSize(2).containsEntry("a", 1)` | | Nullable value | `value.assert().isNull()` or `value.assert().isNotNull()` | | Exception lambda | `assertThrownBy<IllegalArgumentException> { call() }.hasMessage("bad")` | | Existing exception | `throwable.assert().hasMessageContaining("bad")` | | LocalDate/YearMonth month | `date.assert().hasMonth(Month.APRIL)` | | CompletableFuture success/failure | `completableFuture.assert().isCompletedWithValue(value)` / `.isCompletedExceptionally()` | | Recursive comparison | `actual.assert().usingRecursiveComparison().isEqualTo(expected)` | For exception lambdas, also import: ```kotlin import me.ahoo.test.asserts.assertThrownBy ``` For `LocalDate` and `YearMonth` month assertions, import `java.time.Month`; those assertions expect `Month`, not an integer. ## Wow/Saga Tests Use FluentAssert inside expectation blocks t