Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
Mostly due to the way the JDBC is structured in general, it's relatively painful to create a simple test case that just creates a simple table, populates it with a couple of rows, and checks the output of a query.
Adding to this is the fact that there isn't really a single "right way" to write simple unit tests in Phoenix. Some tests try to cleanly close statements, ResultsSets, and Connections, while others don't. New tests of this sort are often created by first copying an existing test.
The end results is that a couple of simple test cases to test a new built-in function often end up being mostly wresting with JDBC, with the actual test case getting largely hidden in the noise.
The purpose of this ticket is to propose a utility to simplify creating tables, populating them, and verifying the output.
The general API I have in mind is would look like this:
QueryTestUtil.on(jdbcUrl) .createTable("testtable", "id integer not null primary key", "name varchar") .withRows( 1, "name1", 2, "name2", 3, "othername") .verifyQueryResults( "select id, name from testtable where name like 'name%'", 1, "name1", 2, "name2");
The intention is to make it much less painful to write tests, and also to replace as enough existing test code to use this pattern so that new tests being created based on existing code will also follow this pattern.