Class AssertionArgs
This class encapsulates additional arguments and configuration options for assertion methods in the Bean-Centric Testing (BCT) framework. It provides a fluent API for customizing assertion behavior including custom converters and enhanced error messaging.
The primary purposes of this class are:
- Custom Bean Conversion: Override the default BeanConverterfor specialized object introspection
- Enhanced Error Messages: Add context-specific error messages with parameter substitution
- Fluent Configuration: Chain configuration calls for readable test setup
- Assertion Context: Provide additional context for complex assertion scenarios
Basic Usage:
     
Custom Bean Converter:
     
Advanced Error Messages:
     
Fluent Configuration:
     
Error Message Composition:
When assertion failures occur, error messages are intelligently composed:
- Base Message: Custom message set via setMessage(String, Object...)orsetMessage(Supplier)
- Assertion Context: Specific context provided by individual assertion methods
- Composite Format: "{base message}, Caused by: {assertion context}" 
     
Thread Safety:
This class is not thread-safe and is intended for single-threaded test execution.
 Each test method should create its own instance using BctAssertions.args() or create
 a new instance directly with new AssertionArgs().
Immutability Considerations:
While this class uses fluent setters that return this for chaining, the instance
 is mutable. For reusable configurations across multiple tests, consider creating a factory
 method that returns pre-configured instances.
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionprotected Optional<BeanConverter>Gets the configured bean converter, if any.Gets the base message supplier for composition with assertion-specific messages.getMessage(String msg, Object... args) Composes the final error message by combining custom and assertion-specific messages.setBeanConverter(BeanConverter value) Sets a customBeanConverterfor object introspection and property access.setMessage(String message, Object... args) Sets a parameterized error message for assertion failures.setMessage(Supplier<String> value) Sets a custom error message supplier for assertion failures.
- 
Constructor Details- 
AssertionArgspublic AssertionArgs()Creates a new instance with default settings.Instances start with no custom bean converter and no custom error message. All assertion methods will use default behavior until configured otherwise. 
 
- 
- 
Method Details- 
setBeanConverterSets a customBeanConverterfor object introspection and property access.The custom converter allows fine-tuned control over how objects are converted to strings, how collections are listified, and how nested properties are accessed. This is particularly useful for: - Custom Object Types: Objects that don't follow standard JavaBean patterns
- Specialized Formatting: Custom string representations for assertion comparisons
- Performance Optimization: Cached or optimized property access strategies
- Domain-Specific Logic: Business-specific property resolution rules
 Example:// Create converter with custom stringifiers var converter = BasicBeanConverter.builder () .defaultSettings() .addStringifier(LocalDate.class ,date ->date .format(DateTimeFormatter.ISO_LOCAL_DATE )) .addStringifier(Money.class ,money ->money .getAmount().toPlainString()) .build();// Use in assertions assertBean (args ().setBeanConverter(converter ),order ,"date,total" ,"2023-12-01,99.99" );- Parameters:
- value- The custom bean converter to use. If null, assertions will fall back to the default converter.
- Returns:
- This instance for method chaining.
 
- 
getBeanConverterGets the configured bean converter, if any.- Returns:
- An Optional containing the custom converter, or empty if using default behavior.
 
- 
setMessageSets a custom error message supplier for assertion failures.The supplier allows for dynamic message generation, including context that may only be available at the time of assertion failure. This is useful for: - Timestamps: Including the exact time of failure
- Test State: Including runtime state information
- Expensive Operations: Deferring costly string operations until needed
- Conditional Messages: Different messages based on runtime conditions
 Example:// Dynamic message with timestamp assertBean (args ().setMessage(() ->"Test failed at " + Instant.now ()),result ,"status" ,"SUCCESS" );// Message with expensive computation assertBean (args ().setMessage(() ->"Failed after " + computeTestDuration() +" ms" ),response ,"error" ,"null" );- Parameters:
- value- The message supplier. Called only when an assertion fails.
- Returns:
- This instance for method chaining.
 
- 
setMessageSets a parameterized error message for assertion failures.This method uses MessageFormatto substitute parameters into the message template. The formatting occurs immediately when this method is called, not when the assertion fails.Parameter Substitution:Uses standard MessageFormat patterns: - {0}- First parameter
- {1}- Second parameter
- {0,number,#}- Formatted number
- {0,date,short}- Formatted date
 Examples:// Simple parameter substitution assertBean (args ().setMessage("User {0} validation failed" ,userId ),user ,"active" ,"true" );// Multiple parameters assertBean (args ().setMessage("Test {0} failed on iteration {1}" ,testName ,iteration ),result ,"success" ,"true" );// Number formatting assertBean (args ().setMessage("Expected {0,number,#.##} but got different value" ,expectedValue ),actual ,"value" ,"123.45" );- Parameters:
- message- The message template with MessageFormat placeholders.
- args- The parameters to substitute into the message template.
- Returns:
- This instance for method chaining.
 
- 
getMessageGets the base message supplier for composition with assertion-specific messages.- Returns:
- The configured message supplier, or null if no custom message was set.
 
- 
getMessageComposes the final error message by combining custom and assertion-specific messages.This method implements the message composition strategy used throughout the assertion framework: - No Custom Message: Returns the assertion-specific message as-is
- With Custom Message: Returns "{custom}, Caused by: {assertion}"
 This allows tests to provide high-level context while preserving the specific technical details about what assertion failed. - Parameters:
- msg- The assertion-specific message template.
- args- Parameters for the assertion-specific message.
- Returns:
- A supplier that produces the composed error message.
 
 
-