strongduanmu opened a new issue #10921:
URL: https://github.com/apache/shardingsphere/issues/10921


   Hi community,
   
   This issue is for #10887.
   
   # Background
   
   Currently `FederateStatementTest` and `FederatePrepareStatementTest` use 
JUNIT to test SQL statements. In order to improve test coverage and code 
elegance, we need to migrate the test scenarios of FederateStatementTest and 
FederatePrepareStatementTest to `shardingsphere-integration-test`. 
   
   # Target
   
   The goal of this issue is to migrate the 
`SELECT_HAVING_SQL_FOR_SHARDING_TABLE` statement to the 
`shardingsphere-integration-test` module. 
   
   You can search for the `SELECT_HAVING_SQL_FOR_SHARDING_TABLE` keyword, and 
then you will find the test cases in `FederateStatementTest` and 
`FederatePrepareStatementTest`.
   
   FederateStatementTest:
   
   ```java
       private static final String SELECT_HAVING_SQL_FOR_SHARDING_TABLE =
               "SELECT user_id, SUM(order_id_sharding) FROM 
t_order_federate_sharding GROUP BY user_id HAVING SUM(order_id_sharding) > 
1000";
   
       @Test
       public void assertHavingForShardingTableWithFederateByExecuteQuery() 
throws SQLException {
           assertHavingForShardingTableWithFederate(true);
       }
       
       @Test
       public void assertHavingForShardingTableWithFederateByExecute() throws 
SQLException {
           assertHavingForShardingTableWithFederate(false);
       }
       
       private void assertHavingForShardingTableWithFederate(final boolean 
executeQuery) throws SQLException {
           Statement statement = 
getShardingSphereDataSource().getConnection().createStatement();
           ResultSet resultSet = getResultSet(statement, 
SELECT_HAVING_SQL_FOR_SHARDING_TABLE, executeQuery);
           assertNotNull(resultSet);
           assertTrue(resultSet.next());
           assertThat(resultSet.getInt(1), is(10));
           assertThat(resultSet.getInt(2), is(2110));
           assertNotNull(resultSet);
           assertTrue(resultSet.next());
           assertThat(resultSet.getInt(1), is(11));
           assertThat(resultSet.getInt(2), is(2112));
           assertFalse(resultSet.next());
       }
   ```
   
   FederatePrepareStatementTest:
   
   ```java
       private static final String SELECT_HAVING_SQL_FOR_SHARDING_TABLE =
               "SELECT user_id, SUM(order_id_sharding) FROM 
t_order_federate_sharding GROUP BY user_id HAVING SUM(order_id_sharding) > ?";
   
       @Test
       public void assertHavingForShardingTableWithFederateByExecuteQuery() 
throws SQLException {
           assertHavingForShardingTableWithFederate(true);
       }
       
       @Test
       public void assertHavingForShardingTableWithFederateByExecute() throws 
SQLException {
           assertHavingForShardingTableWithFederate(false);
       }
       
       private void assertHavingForShardingTableWithFederate(final boolean 
executeQuery) throws SQLException {
           PreparedStatement preparedStatement = 
getShardingSphereDataSource().getConnection().prepareStatement(SELECT_HAVING_SQL_FOR_SHARDING_TABLE);
           preparedStatement.setInt(1, 1000);
           ResultSet resultSet = getResultSet(preparedStatement, executeQuery);
           assertNotNull(resultSet);
           assertTrue(resultSet.next());
           assertThat(resultSet.getInt(1), is(10));
           assertThat(resultSet.getInt(2), is(2110));
           assertNotNull(resultSet);
           assertTrue(resultSet.next());
           assertThat(resultSet.getInt(1), is(11));
           assertThat(resultSet.getInt(2), is(2112));
           assertFalse(resultSet.next());
       }
   ```
   
   # How to
   In order to finish this task, you need to understand the 
[documentation](https://shardingsphere.apache.org/document/current/en/features/test-engine/integration-test/)
 of the integration test first, and PR #10913 also provides an example, which 
you can refer to. BTW, if you have any questions, please leave a comment.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to