TableTest (VS Code)
IDE support for TableTest tables used in JUnit data-driven tests.
Website and docs: tabletest.org
What is TableTest?
TableTest is a JUnit extension for writing data-driven tests as readable tables instead of repetitive test methods.
- Each column represents an input parameter or expected output
- Each row represents a test case
This style keeps test data clear, maintainable, and easy to extend.
Features
- Rich syntax highlighting for TableTest tables:
- Header cells
// table comments
- Map keys
- Nested list/set/map structures
- Table auto-formatting with aligned
| columns
- Cell value normalisation for lists/sets/maps
- Support for Java, Kotlin, and standalone
.table files
- Warnings for malformed collection cells in tables, including:
- trailing-comma empty elements (for example
[a, b,])
- map entries without values (for example
[key:])
- map values with extra top-level colons (for example
[a: b:c:d])
- Automatic language injection for
@TableTest in Java and Kotlin
Supported contexts
| Context |
Highlighting |
Formatting |
.table file |
✅ source.tabletest grammar |
✅ Standard Format Document / Format Selection |
Java / Kotlin @TableTest(...) triple-quoted string |
✅ Injection grammar (source.java / source.kotlin) |
✅ TableTest: Format All Tables in Document |
Formatting in Java/Kotlin is intentionally exposed as a command so normal Java/Kotlin formatter entry points are not overridden.
Installation
From VS Code:
- Open Extensions (
Ctrl+Shift+X / Cmd+Shift+X)
- Search for
TableTest
- Install the extension published by
tabletest
Direct links:
Command line:
code --install-extension tabletest.tabletest
From local package (.vsix):
- Open Extensions view
... menu -> Install from VSIX...
- Select your
.vsix file
Getting started
- Add TableTest dependency to your project alongside JUnit.
Maven:
<dependency>
<groupId>org.tabletest</groupId>
<artifactId>tabletest-junit</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
Gradle:
testImplementation "org.tabletest:tabletest-junit:1.0.0"
- Create a test using
@TableTest and write test data as a table in the annotation.
- Format your tables with
TableTest: Format All Tables in Document from Command Palette.
- Use standard VS Code shortcut to comment/uncomment lines:
Ctrl+/ (Windows/Linux) or Cmd+/ (macOS).
- Use standard VS Code shortcut to move lines up/down:
Alt+Up/Down (Windows/Linux) or Option+Up/Down (macOS).
Table syntax
Cell values can be:
- Empty
- Unquoted text
- Single-quoted or double-quoted strings
- Line comments:
// comment
- Lists:
[a, b, c]
- Sets:
{a, b, c}
- Maps:
[k: v, x: y]
- Nested combinations of the above
Example
Before:
a|b
[1,2]|[k:v]
After:
a | b
[1, 2] | [k: v]
Java/Kotlin usage
Use Command Palette:
TableTest: Format All Tables in Document
Typical annotation forms:
@TableTest("""...""")
@TableTest(value = """...""")
Configuration
tabletest.format.extraIndentLevel (user-configurable; by default Java behaves as 1, Kotlin as 0)
- Adds extra indentation levels to formatted rows inside Java/Kotlin
@TableTest triple-quoted strings.
- Indent width follows VS Code formatting options (
tabSize / insertSpaces) and respects EditorConfig-applied indentation.
Limitations
- Annotation extraction in Java/Kotlin uses a lightweight scanner, not a full parser.
value is extracted only from a direct triple-quoted literal:
- explicit
value = """...""", or
- single implicit positional argument with no named arguments.
- Diagnostics currently focus on malformed collection cells (lists/sets/maps), including invalid trailing commas and invalid map entries.
Contributing
Developer documentation and release workflow are in CONTRIBUTING.md.