cui-testing
CUI test library standards for test data generation, value object contracts, and JUL log testing
SKILL.mdmarketplace/bundles/pm-dev-java-cui/skills/cui-testing/SKILL.md
GitHubCUI Testing Skill
REFERENCE MODE: This skill provides reference material. Load specific standards on-demand based on current task.
CUI-specific testing standards for projects using CUI test libraries. This skill covers the mandatory test data generator framework, value object contract testing, and JUL log testing utilities.
Enforcement
Execution mode: Reference library; load standards progressively based on current testing task.
Prohibited actions:
- Do not use manual test data, Random, UUID, or Faker; must use CUI Generators framework
- Do not use Mockito or PowerMock in CUI projects; use EasyMock or CUI test patterns
- Do not load all standards at once; load progressively based on current task
Constraints:
- All test classes must use
@EnableGeneratorControllerannotation - Value object tests must implement
ShouldHandleObjectContracts<T>contract interface - Log verification tests must use
@EnableTestLoggerandLogAsserts - Parameterized tests must use
@GeneratorsSourcewith typed generators
Prerequisites
This skill requires CUI test library dependencies:
de.cuioss.test:cui-test-generator(Generators, TypedGenerator)de.cuioss.test:cui-test-value-objects(ShouldHandleObjectContracts)de.cuioss.test:cui-test-juli(EnableTestLogger, LogAsserts)
Workflow
Step 1: Load Test Generator Framework
CRITICAL: Load this standard for any test implementation work.
Read: standards/test-generator-framework.md
This provides the foundational rules:
- MANDATORY use of
Generators.*for ALL test data - FORBIDDEN: Manual test data, Random, Faker
- REQUIRED:
@EnableGeneratorControllerannotation
Step 2: Load Additional Standards (As Needed)
Value Object Testing (load for domain object tests):
Read: standards/testing-value-objects.md
Use when: Testing value objects, implementing equals/hashCode contracts, or using ShouldHandleObjectContracts<T>.
JUL Log Testing (load for log verification tests):
Read: standards/testing-juli-logger.md
Use when: Testing code that uses CUI logging and needs to verify log output with @EnableTestLogger and LogAsserts.
Key Rules Summary
Test Data Generation
// CORRECT - Use Generators
@EnableGeneratorController
class MyServiceTest {
@Test
void shouldProcess() {
String input = Generators.nonEmptyStrings().next();
// ...
}
}
// FORBIDDEN - Never use manual data or Random
String input = "test"; // WRONG
String input = UUID.randomUUID().toString(); // WRONG
Parameterized Tests
// CORRECT - Use @GeneratorsSource
@ParameterizedTest
@GeneratorsSource(EmailGenerator.class)
void shouldValidateEmail(String email) {
// Test with generated emails
}
Value Object Contracts
// Implements automatic contract testing
class PersonTest implements ShouldHandleObjectContracts<Person> {
@Override
public Person getUnderTest() {
return new PersonGenerator().next();
}
}
Log Testing
@EnableTestLogger
class MyServiceTest {
@Test
void shouldLogWarning() {
// Execute code that logs
service.processWithWarning();
// Verify log output
LogAsserts.assertLogMessagePresentContaining(TestLogLevel.WARN, "expected message");
}
}
Forbidden Libraries (CUI Projects)
| Library | Reason | Alternative |
|---|---|---|
| Mockito | Use CUI framework alternatives | EasyMock for simple mocking, cui-test-mockwebserver-junit5 for HTTP |
| PowerMock | Refactor to dependency injection | EasyMock or CUI test patterns |
When encountering Mockito in existing CUI code:
- Replace
when().thenReturn()with EasyMock equivalents or dependency injection - Use
cui-test-mockwebserver-junit5for HTTP client testing - See
pm-dev-java-cui:cui-http-testingfor MockWebServer patterns
Related Skills
plan-marshall:persona-module-tester- Language-agnostic testing principles (AAA, coverage, reliability)pm-dev-java:junit-core- General JUnit 5 patterns (no CUI dependencies)pm-dev-java-cui:cui-logging- CUI logging standards (use with cui-testing for log tests)
Standards Reference
| Standard | Purpose |
|---|---|
| test-generator-framework.md | Mandatory test data generation |
| testing-value-objects.md | Contract testing for value objects |
| testing-juli-logger.md | JUL log testing with LogAsserts |