Next Steps
Congratulations! You’ve written your first TableTest. Here’s where to go from here based on what you want to learn.
Continue Learning
Learn the Fundamentals
Work through the User Guide to understand TableTest deeply:
- Basic Usage — Table syntax, column mapping, scenario names
- Value Formats — Lists, sets, maps, nested structures, and quoting rules
- Type Conversion — Built-in and custom
@TypeConvertermethods - Advanced Features — Value sets, external files, parameter resolvers
- Realistic Example — Complete worked example
Explore the Ecosystem
TableTest provides tools that enhance your development workflow — an IntelliJ plugin for auto-formatting and syntax highlighting, a formatter for CI/CD enforcement, and a reporter for generating documentation from your tests.
Quick Tips
Start Simple
Begin with basic value types (strings, numbers, booleans) before exploring collections and custom types. Get comfortable with the fundamentals first.
Use Descriptive Scenarios
The scenario column is your documentation. Make descriptions clear:
// Good
"Valid email format"
"Email missing @ symbol"
// Less helpful
"Test 1"
"Test 2"Install the IDE Plugin
The IntelliJ plugin saves significant time by automatically formatting tables, highlighting syntax, and catching errors as you type.
Common Questions
Q: Can I use TableTest with Kotlin? A: Yes! TableTest fully supports Kotlin. See the User Guide for examples.
Q: How do I test exceptions?
A: Use standard JUnit assertions like assertThrows:
@TableTest("""
Input
-1
""")
void testNegativeInput(int input) {
assertThrows(IllegalArgumentException.class,
() -> someMethod(input));
}Q: Where do I put large tables?
A: Use external files with the resource attribute:
@TableTest(resource = "/test-data/large-dataset.table")See Advanced Features for details.
Q: I get a conversion error but my values look correct? A: Check that every parameter has a matching column. If the table has fewer columns than parameters, TableTest will try to map the scenario column as a value:
@TableTest("""
Scenario | A | B
Test | 2 | 3
""")
void test(int a, int b, int sum) { // 'sum' has no matching column!TableTest only treats the first column as a scenario name when there is exactly one more column than parameters.
Q: How do I handle values that can’t be converted to the parameter type?
A: Ensure values in the table match the parameter types, or provide a custom @TypeConverter method. For example, "abc" cannot be converted to int:
@TableTest("""
Number
abc
""")
void test(int number) { // Can't convert "abc" to int!See Type Conversion for how to write custom converters.
Get Help
- GitHub Issues: Report bugs or request features
- Documentation: Browse the User Guide or the full User Guide on GitHub
- Examples: Check the repository for example projects
Contributing
TableTest is open source (Apache 2.0). Contributions are welcome!
- Star the project on GitHub
Ready to learn more? Start with Basic Usage →