JUnit 5
See quick start(facet) for snippets of Table Facet.
Importing
import org.junit.jupiter.api.Nested;
import guru.mikelue.foxglove.annotation.DataGeneratorSource;
import guru.mikelue.foxglove.annotation.GenData;
import guru.mikelue.foxglove.annotation.TableFacetsSource;
import guru.mikelue.foxglove.functional.TableFacetProvider;
import guru.mikelue.foxglove.jdbc.JdbcTableFacet;Default DataGenerator
@DataGeneratorSource
DataGenerator<?> defaultDataGenerator()
{
return new JdbcDataGenerator(getDataSource());
}Basic usage
By fields
// Use direct object of TableFacet
@TableFacetsSource
TableFacet carsOfRed = JdbcTableFacet.builder(TABLE_CAR)
.column("cr_color").fixed("red")
.numberOfRows(RANDOM_ROWS).build();
// Use provider of TableFacet
@TableFacetsSource
TableFacetProvider<TableFacet> membersInTaipei = () ->
JdbcTableFacet.builder(TABLE_MEMBER)
.column("mb_address").fixed("Taipei, Taiwan 1234 Main St")
.numberOfRows(RANDOM_ROWS).build();
@Test
@GenData(facetsNames = { "carsOfRed", "membersInTaipei" })
void byFields()
{
/* ... */
}Warning |
|
By methods
@TableFacetsSource
TableFacet carsOfBlue()
{
return JdbcTableFacet.builder(TABLE_CAR)
.column("cr_color").fixed("blue")
.numberOfRows(RANDOM_ROWS)
.build();
}
@TableFacetsSource
TableFacet membersInNewYork()
{
return JdbcTableFacet.builder(TABLE_MEMBER)
.column("mb_address").fixed("New York, NY 1234 Main St")
.numberOfRows(RANDOM_ROWS)
.build();
}
@Test
@GenData(facetsNames = { "carsOfBlue", "membersInNewYork" })
void byMethods()
{
/* ... */
}By provider class
static class CarsInSilver implements TableFacetProvider<TableFacet> {
@Override
public TableFacet getOne()
{
return JdbcTableFacet.builder(TABLE_CAR)
.column("cr_color").fixed("silver")
.numberOfRows(RANDOM_ROWS)
.build();
}
}
@Test
@GenData({ CarsInSilver.class })
void byProviderClass()
{
/* ... */
}By named sources
@TableFacetsSource("carsOfRainbow")
TableFacet carsOfSomeColors = JdbcTableFacet.builder(TABLE_CAR)
.column("cr_color")
.roundRobin(
"Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"
)
.numberOfRows(RANDOM_ROWS)
.build();
@Test
@GenData(facetsNames = { "carsOfRainbow" })
void byTableFacetWithName()
{
/* ... */
}References: TableFacetsProvider
List, Stream, or array of TableFacets
By array
@TableFacetsSource
TableFacet[] carsOfArray()
{
return new TableFacet[] {
JdbcTableFacet.builder(TABLE_CAR)
.column("cr_color").fixed("coral")
.numberOfRows(RANDOM_ROWS)
.build(),
JdbcTableFacet.builder(TABLE_CAR)
.column("cr_model").fixed("GK-001")
.numberOfRows(RANDOM_ROWS)
.build()
};
}
@Test
@GenData(facetsNames = { "carsOfArray" })
void byArrayOfTableFacet()
{
/* ... */
}By list
@TableFacetsSource
List<TableFacet> carsOfList()
{
return List.of(
JdbcTableFacet.builder(TABLE_CAR)
.column("cr_color").fixed("Crimson")
.numberOfRows(RANDOM_ROWS)
.build(),
JdbcTableFacet.builder(TABLE_CAR)
.column("cr_model").fixed("LK-002")
.numberOfRows(RANDOM_ROWS)
.build()
);
}
@Test
@GenData(facetsNames = { "carsOfList" })
void byListOfTableFacet()
{
/* ... */
}By stream
@TableFacetsSource
Stream<TableFacet> carsOfStream()
{
return Stream.of(
JdbcTableFacet.builder(TABLE_CAR)
.column("cr_color").fixed("BlueViolet")
.numberOfRows(RANDOM_ROWS)
.build(),
JdbcTableFacet.builder(TABLE_CAR)
.column("cr_model").fixed("GN-003")
.numberOfRows(RANDOM_ROWS)
.build()
);
}
@Test
@GenData(facetsNames = { "carsOfStream" })
void byStreamOfTableFacet()
{
/* ... */
}Nested test class
Use sources of enclosing class
@TableFacetsSource
TableFacet carsOfGreen = JdbcTableFacet.builder(TABLE_CAR)
.column("cr_color").fixed("green")
.numberOfRows(RANDOM_ROWS).build();
@Nested
class NestedTest {
@Test
@GenData(facetsNames = { "carsOfGreen" })
void nestedByFields()
{
assertNumberOfRows(
TABLE_CAR,
"cr_color = 'green'"
)
.isEqualTo(RANDOM_ROWS);
}
}References: Nested Tests