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:

  1. Basic Usage — Table syntax, column mapping, scenario names
  2. Value Formats — Lists, sets, maps, nested structures, and quoting rules
  3. Type Conversion — Built-in and custom @TypeConverter methods
  4. Advanced Features — Value sets, external files, parameter resolvers
  5. 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

Contributing

TableTest is open source (Apache 2.0). Contributions are welcome!


Ready to learn more? Start with Basic Usage →