You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2022/10/13 07:13:34 UTC

[doris] branch branch-1.1-lts updated: [refactor](be ut) Unify all unit tests into one binary file (#8958) (#13329)

This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-1.1-lts
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-1.1-lts by this push:
     new b602629b9a [refactor](be ut) Unify all unit tests into one binary file (#8958) (#13329)
b602629b9a is described below

commit b602629b9a57f6eecfb81a892212a1875f09a0d3
Author: Zhengguo Yang <ya...@gmail.com>
AuthorDate: Thu Oct 13 15:13:28 2022 +0800

    [refactor](be ut) Unify all unit tests into one binary file (#8958) (#13329)
    
    1. solved the previous delayed unit test file size is too large (1.7G+) and the unit test link time is too long problem problems
    2. Unify all unit tests into one file to significantly reduce unit test execution time to less than 3 mins
    3. temporarily disable stream_load_test.cpp, metrics_action_test.cpp, load_channel_mgr_test.cpp because it will re-implement part of the code and affect other tests
    
    (cherry picked from commit 5a44eeaf6215ed211758a94b456fb49894e77906)
    
    Change-Id: I67a162912a35273804bc6d026acc9bd9ccc3ca3d
---
 be/CMakeLists.txt                                  |   48 +-
 be/src/olap/storage_engine.cpp                     |    4 +-
 be/src/runtime/user_function_cache.cpp             |    5 +-
 be/src/util/core_local.h                           |   13 +
 be/src/util/metrics.cpp                            |    2 +
 be/src/util/metrics.h                              |    2 +
 be/test/CMakeLists.txt                             |  384 ++++++
 be/test/agent/CMakeLists.txt                       |   27 -
 be/test/agent/agent_server_test.cpp                |   11 -
 be/test/agent/cgroups_mgr_test.cpp                 |   70 +-
 be/test/agent/heartbeat_server_test.cpp            |   11 -
 be/test/agent/utils_test.cpp                       |    8 +-
 be/test/common/CMakeLists.txt                      |   24 -
 be/test/common/config_test.cpp                     |   77 +-
 be/test/common/config_validator_test.cpp           |   27 +-
 be/test/common/resource_tls_test.cpp               |   23 +-
 be/test/common/status_test.cpp                     |   37 +-
 be/test/env/CMakeLists.txt                         |   21 -
 be/test/env/env_posix_test.cpp                     |  125 +-
 be/test/exec/CMakeLists.txt                        |   76 --
 be/test/exec/broker_reader_test.cpp                |   16 +-
 be/test/exec/broker_scan_node_test.cpp             |   31 +-
 be/test/exec/broker_scanner_test.cpp               |  257 ++--
 be/test/exec/buffered_reader_test.cpp              |  111 +-
 be/test/exec/csv_scan_bench_test.cpp               |   28 +-
 be/test/exec/csv_scan_node_test.cpp                |   89 +-
 be/test/exec/csv_scanner_test.cpp                  |   21 +-
 be/test/exec/es_http_scan_node_test.cpp            |   15 +-
 be/test/exec/es_predicate_test.cpp                 |    9 +-
 be/test/exec/es_query_builder_test.cpp             |   41 +-
 be/test/exec/es_scan_node_test.cpp                 |   19 +-
 be/test/exec/es_scan_reader_test.cpp               |   13 +-
 be/test/exec/hash_table_test.cpp                   |   18 +-
 be/test/exec/json_scanner_test.cpp                 |   52 +-
 be/test/exec/json_scanner_with_jsonpath_test.cpp   |   40 +-
 be/test/exec/multi_bytes_separator_test.cpp        |   37 +-
 be/test/exec/mysql_scan_node_test.cpp              |   55 +-
 be/test/exec/mysql_scanner_test.cpp                |   31 +-
 be/test/exec/new_olap_scan_node_test.cpp           |   56 +-
 be/test/exec/olap_common_test.cpp                  |  627 +++++----
 be/test/exec/olap_scan_node_test.cpp               |   74 +-
 be/test/exec/olap_scanner_test.cpp                 |   12 -
 be/test/exec/orc_scanner_test.cpp                  |   39 +-
 be/test/exec/parquet_scanner_test.cpp              |   39 +-
 be/test/exec/plain_text_line_reader_bzip_test.cpp  |  119 +-
 be/test/exec/plain_text_line_reader_gzip_test.cpp  |  161 ++-
 .../exec/plain_text_line_reader_lz4frame_test.cpp  |  119 +-
 be/test/exec/plain_text_line_reader_lzop_test.cpp  |  165 ++-
 .../plain_text_line_reader_uncompressed_test.cpp   |  197 ++-
 be/test/exec/s3_reader_test.cpp                    |   43 +-
 be/test/exec/schema_scan_node_test.cpp             |   57 +-
 .../schema_scanner/schema_authors_scanner_test.cpp |   35 +-
 .../schema_charsets_scanner_test.cpp               |   35 +-
 .../schema_collations_scanner_test.cpp             |   35 +-
 .../schema_scanner/schema_columns_scanner_test.cpp |   67 +-
 .../schema_create_table_scanner_test.cpp           |   67 +-
 .../schema_scanner/schema_engines_scanner_test.cpp |   35 +-
 .../schema_open_tables_scanner_test.cpp            |   67 +-
 .../schema_schemata_scanner_test.cpp               |   51 +-
 .../schema_table_names_scanner_test.cpp            |   59 +-
 .../schema_scanner/schema_tables_scanner_test.cpp  |   67 +-
 .../schema_variables_scanner_test.cpp              |   35 +-
 be/test/exec/schema_scanner_test.cpp               |   43 +-
 be/test/exec/set_executor_test.cpp                 |   16 +-
 be/test/exec/tablet_info_test.cpp                  |  109 +-
 be/test/exec/tablet_sink_test.cpp                  |  114 +-
 be/test/exec/unix_odbc_test.cpp                    |   10 -
 be/test/exprs/CMakeLists.txt                       |   42 -
 be/test/exprs/array_functions_test.cpp             |    5 -
 be/test/exprs/binary_predicate_test.cpp            |   22 +-
 be/test/exprs/bitmap_function_test.cpp             |  295 ++--
 be/test/exprs/bloom_filter_predicate_test.cpp      |   25 +-
 be/test/exprs/encryption_functions_test.cpp        |   54 +-
 be/test/exprs/hll_function_test.cpp                |   13 +-
 be/test/exprs/hybrid_set_test.cpp                  |  125 +-
 be/test/exprs/in_op_test.cpp                       |   20 +-
 be/test/exprs/in_predicate_test.cpp                |   42 +-
 be/test/exprs/json_function_test.cpp               |  180 +--
 be/test/exprs/math_functions_test.cpp              |  181 ++-
 be/test/exprs/percentile_approx_test.cpp           |   15 +-
 be/test/exprs/percentile_test.cpp                  |   13 +-
 be/test/exprs/runtime_filter_test.cpp              |  145 +-
 be/test/exprs/string_functions_test.cpp            |  466 ++++---
 be/test/exprs/timestamp_functions_test.cpp         |  180 ++-
 be/test/exprs/topn_function_test.cpp               |   11 +-
 be/test/exprs/window_funnel_test.cpp               |   94 +-
 be/test/geo/CMakeLists.txt                         |   23 -
 be/test/geo/geo_functions_test.cpp                 |   80 +-
 be/test/geo/geo_types_test.cpp                     |   68 +-
 be/test/geo/wkt_parse_test.cpp                     |   13 +-
 be/test/gutil/CMakeLists.txt                       |   24 -
 be/test/gutil/strings/numbers_test.cpp             |    5 -
 be/test/http/CMakeLists.txt                        |   25 -
 be/test/http/http_client_test.cpp                  |   45 +-
 be/test/http/http_utils_test.cpp                   |   17 +-
 be/test/http/message_body_sink_test.cpp            |   15 +-
 be/test/http/metrics_action_test.cpp               |    7 +-
 be/test/http/stream_load_test.cpp                  |   51 +-
 be/test/olap/CMakeLists.txt                        |   98 --
 be/test/olap/aggregate_func_test.cpp               |  115 +-
 be/test/olap/bit_field_test.cpp                    |   76 +-
 be/test/olap/block_column_predicate_test.cpp       |  125 +-
 .../olap/bloom_filter_column_predicate_test.cpp    |   55 +-
 be/test/olap/bloom_filter_index_test.cpp           |   31 +-
 be/test/olap/bloom_filter_test.cpp                 |   43 +-
 be/test/olap/byte_buffer_test.cpp                  |  125 +-
 be/test/olap/column_reader_test.cpp                |  712 +++++-----
 be/test/olap/column_vector_test.cpp                |   23 +-
 be/test/olap/common_test.cpp                       |   13 +-
 be/test/olap/comparison_predicate_test.cpp         |  253 ++--
 be/test/olap/cumulative_compaction_policy_test.cpp |  138 +-
 be/test/olap/decimal12_test.cpp                    |   29 +-
 be/test/olap/delete_handler_test.cpp               |  187 +--
 be/test/olap/delta_writer_test.cpp                 |  111 +-
 be/test/olap/file_helper_test.cpp                  |   39 +-
 be/test/olap/file_utils_test.cpp                   |  139 +-
 be/test/olap/fs/file_block_manager_test.cpp        |   19 +-
 be/test/olap/generic_iterators_test.cpp            |   51 +-
 be/test/olap/hll_test.cpp                          |   61 +-
 be/test/olap/in_list_predicate_test.cpp            |  207 ++-
 be/test/olap/key_coder_test.cpp                    |   67 +-
 be/test/olap/lru_cache_test.cpp                    |  208 ++-
 be/test/olap/memory/column_delta_test.cpp          |    9 +-
 be/test/olap/memory/column_test.cpp                |   55 +-
 be/test/olap/memory/hash_index_test.cpp            |    5 -
 be/test/olap/memory/mem_tablet_test.cpp            |   19 +-
 be/test/olap/memory/partial_row_batch_test.cpp     |    9 +-
 be/test/olap/memory/schema_test.cpp                |   25 +-
 be/test/olap/memtable_flush_executor_test.cpp      |   39 +-
 be/test/olap/null_predicate_test.cpp               |  101 +-
 be/test/olap/olap_meta_test.cpp                    |   35 +-
 be/test/olap/options_test.cpp                      |   88 +-
 be/test/olap/page_cache_test.cpp                   |   70 +-
 be/test/olap/push_handler_test.cpp                 |   38 +-
 be/test/olap/row_block_test.cpp                    |   64 +-
 be/test/olap/row_block_v2_test.cpp                 |   26 +-
 be/test/olap/row_cursor_test.cpp                   |  100 +-
 be/test/olap/rowset/alpha_rowset_test.cpp          |   77 +-
 be/test/olap/rowset/beta_rowset_test.cpp           |  110 +-
 be/test/olap/rowset/rowset_converter_test.cpp      |   91 +-
 be/test/olap/rowset/rowset_meta_manager_test.cpp   |   52 +-
 be/test/olap/rowset/rowset_meta_test.cpp           |   97 +-
 .../rowset/segment_v2/binary_dict_page_test.cpp    |   65 +-
 .../rowset/segment_v2/binary_plain_page_test.cpp   |   29 +-
 .../rowset/segment_v2/binary_prefix_page_test.cpp  |   51 +-
 .../olap/rowset/segment_v2/bitmap_index_test.cpp   |   71 +-
 .../rowset/segment_v2/bitshuffle_page_test.cpp     |   29 +-
 .../rowset/segment_v2/block_bloom_filter_test.cpp  |   69 +-
 .../bloom_filter_index_reader_writer_test.cpp      |   48 +-
 .../rowset/segment_v2/bloom_filter_page_test.cpp   |   31 +-
 .../segment_v2/column_reader_writer_test.cpp       |  147 +-
 .../olap/rowset/segment_v2/encoding_info_test.cpp  |   11 +-
 .../segment_v2/frame_of_reference_page_test.cpp    |   43 +-
 .../rowset/segment_v2/ordinal_page_index_test.cpp  |   96 +-
 be/test/olap/rowset/segment_v2/plain_page_test.cpp |   37 +-
 be/test/olap/rowset/segment_v2/rle_page_test.cpp   |   27 +-
 be/test/olap/rowset/segment_v2/row_ranges_test.cpp |   93 +-
 be/test/olap/rowset/segment_v2/segment_test.cpp    |  284 ++--
 .../olap/rowset/segment_v2/zone_map_index_test.cpp |  106 +-
 .../rowset/unique_rowset_id_generator_test.cpp     |   66 +-
 be/test/olap/run_length_byte_test.cpp              |  310 +++--
 be/test/olap/run_length_integer_test.cpp           |  386 +++---
 be/test/olap/schema_change_test.cpp                |  137 +-
 be/test/olap/selection_vector_test.cpp             |   19 +-
 be/test/olap/serialize_test.cpp                    |  129 +-
 be/test/olap/short_key_index_test.cpp              |   41 +-
 be/test/olap/skiplist_test.cpp                     |   66 +-
 be/test/olap/storage_types_test.cpp                |   53 +-
 be/test/olap/stream_index_test.cpp                 |  142 +-
 be/test/olap/tablet_meta_manager_test.cpp          |   35 +-
 be/test/olap/tablet_meta_test.cpp                  |    7 +-
 be/test/olap/tablet_mgr_test.cpp                   |  120 +-
 ...et_schema_helper.h => tablet_schema_helper.cpp} |   41 +-
 be/test/olap/tablet_schema_helper.h                |  134 +-
 be/test/olap/tablet_test.cpp                       |    8 +-
 be/test/olap/timestamped_version_tracker_test.cpp  |  186 ++-
 be/test/olap/txn_manager_test.cpp                  |   97 +-
 be/test/plugin/CMakeLists.txt                      |   26 -
 be/test/plugin/plugin_loader_test.cpp              |   37 +-
 be/test/plugin/plugin_mgr_test.cpp                 |   21 +-
 be/test/plugin/plugin_zip_test.cpp                 |   39 +-
 be/test/runtime/CMakeLists.txt                     |   66 -
 be/test/runtime/buffer_control_block_test.cpp      |   72 +-
 be/test/runtime/buffered_block_mgr2_test.cpp       |   28 +-
 be/test/runtime/buffered_tuple_stream2_test.cpp    |  116 +-
 be/test/runtime/buffered_tuple_stream_test.cpp     |   48 +-
 be/test/runtime/cache/partition_cache_test.cpp     |   65 +-
 be/test/runtime/collection_value_test.cpp          |   13 +-
 be/test/runtime/data_spliter_test.cpp              |   16 -
 be/test/runtime/data_stream_test.cpp               |   24 -
 be/test/runtime/datetime_value_test.cpp            |  952 ++++++-------
 be/test/runtime/decimal_value_test.cpp             |  300 ++---
 be/test/runtime/decimalv2_value_test.cpp           |  927 ++++++-------
 be/test/runtime/disk_io_mgr_test.cpp               |  108 +-
 be/test/runtime/dpp_sink_internal_test.cpp         |   11 +-
 be/test/runtime/etl_job_mgr_test.cpp               |  143 +-
 be/test/runtime/export_task_mgr_test.cpp           |  147 +-
 be/test/runtime/external_scan_context_mgr_test.cpp |   38 +-
 be/test/runtime/fragment_mgr_test.cpp              |   24 +-
 be/test/runtime/heartbeat_flags_test.cpp           |   11 +-
 be/test/runtime/kafka_consumer_pipe_test.cpp       |   24 +-
 be/test/runtime/large_int_value_test.cpp           |   26 +-
 be/test/runtime/load_channel_mgr_test.cpp          |   57 +-
 be/test/runtime/mem_limit_test.cpp                 |   12 -
 be/test/runtime/mem_pool_test.cpp                  |   12 -
 be/test/runtime/memory/chunk_allocator_test.cpp    |   13 +-
 be/test/runtime/memory/system_allocator_test.cpp   |   13 +-
 be/test/runtime/memory_scratch_sink_test.cpp       |   37 +-
 be/test/runtime/qsorter_test.cpp                   |   42 +-
 be/test/runtime/raw_value_test.cpp                 |   12 -
 be/test/runtime/result_buffer_mgr_test.cpp         |   38 +-
 be/test/runtime/result_queue_mgr_test.cpp          |   44 +-
 be/test/runtime/result_sink_test.cpp               |   18 +-
 .../runtime/routine_load_task_executor_test.cpp    |   14 +-
 be/test/runtime/small_file_mgr_test.cpp            |  113 --
 be/test/runtime/snapshot_loader_test.cpp           |   51 +-
 be/test/runtime/sorter_test.cpp                    |  112 +-
 be/test/runtime/stream_load_pipe_test.cpp          |   73 +-
 be/test/runtime/string_buffer_test.cpp             |   13 -
 be/test/runtime/string_value_test.cpp              |   15 -
 be/test/runtime/test_env.cc                        |    1 +
 be/test/runtime/thread_resource_mgr_test.cpp       |   12 -
 be/test/runtime/tmp_file_mgr_test.cpp              |   15 -
 be/test/runtime/user_function_cache_test.cpp       |  192 ---
 be/test/test_util/CMakeLists.txt                   |   29 -
 be/test/testutil/desc_tbl_builder.cc               |  119 ++
 be/test/testutil/desc_tbl_builder.h                |   74 ++
 be/test/testutil/function_utils.cpp                |   61 +
 .../md5_test.cpp => testutil/function_utils.h}     |   45 +-
 .../run_all_tests.cpp}                             |   36 +-
 be/test/{test_util => testutil}/test_util.cpp      |    2 +-
 be/test/{test_util => testutil}/test_util.h        |    0
 be/test/tools/CMakeLists.txt                       |   23 -
 be/test/tools/benchmark_tool.cpp                   |    3 +-
 be/test/udf/CMakeLists.txt                         |   25 -
 be/test/udf/uda_test.cpp                           |   11 -
 be/test/udf/udf_test.cpp                           |   11 -
 be/test/util/CMakeLists.txt                        |   79 --
 be/test/util/arrow/arrow_row_batch_test.cpp        |   41 +-
 be/test/util/arrow/arrow_row_block_test.cpp        |   39 +-
 be/test/util/arrow/arrow_work_flow_test.cpp        |   36 +-
 be/test/util/bit_stream_utils_test.cpp             |   19 +-
 be/test/util/bit_util_test.cpp                     |   12 -
 be/test/util/bitmap_test.cpp                       |   77 +-
 be/test/util/bitmap_value_test.cpp                 |  195 ++-
 be/test/util/block_compression_test.cpp            |   25 +-
 be/test/util/blocking_queue_test.cpp               |   32 +-
 be/test/util/broker_storage_backend_test.cpp       |   73 +-
 be/test/util/brpc_client_cache_test.cpp            |   15 +-
 be/test/util/byte_buffer2_test.cpp                 |   27 +-
 be/test/util/cgroup_util_test.cpp                  |   17 +-
 be/test/util/cidr_test.cpp                         |    6 -
 be/test/util/coding_test.cpp                       |   55 +-
 be/test/util/core_local_test.cpp                   |   29 +-
 be/test/util/countdown_latch_test.cpp              |   19 +-
 be/test/util/counter_cond_variable_test.cpp        |    9 +-
 be/test/util/counts_test.cpp                       |   10 +-
 be/test/util/crc32c_test.cpp                       |   21 +-
 be/test/util/date_func_test.cpp                    |   37 +-
 be/test/util/decompress_test.cpp                   |   11 -
 be/test/util/doris_metrics_test.cpp                |  121 +-
 be/test/util/easy_json-test.cpp                    |   37 +-
 be/test/util/encryption_util_test.cpp              |   65 +-
 be/test/util/faststring_test.cpp                   |   39 +-
 be/test/util/file_cache_test.cpp                   |   19 +-
 be/test/util/filesystem_util_test.cpp              |    9 +-
 be/test/util/frame_of_reference_coding_test.cpp    |   53 +-
 be/test/util/histogram_test.cpp                    |   63 +-
 be/test/util/http_channel_test.cpp                 |   24 +-
 be/test/util/internal_queue_test.cpp               |  127 +-
 be/test/util/json_util_test.cpp                    |   11 +-
 be/test/util/lru_cache_util_test.cpp               |   33 +-
 be/test/util/md5_test.cpp                          |    9 +-
 .../{new_metrics_test.cpp => metrics_test.cpp}     |  158 ++-
 be/test/util/monotime_test.cpp                     |  123 +-
 be/test/util/mysql_row_buffer_test.cpp             |    5 -
 be/test/util/parse_util_test.cpp                   |   28 +-
 be/test/util/path_trie_test.cpp                    |  125 +-
 be/test/util/path_util_test.cpp                    |  123 +-
 be/test/util/perf_counters_test.cpp                |   86 --
 be/test/util/radix_sort_test.cpp                   |   47 +-
 be/test/util/rle_encoding_test.cpp                 |   53 +-
 be/test/util/runtime_profile_test.cpp              |   12 -
 be/test/util/s3_storage_backend_test.cpp           |   80 +-
 be/test/util/s3_uri_test.cpp                       |   37 +-
 be/test/util/scoped_cleanup_test.cpp               |   11 +-
 be/test/util/sm3_test.cpp                          |   13 +-
 be/test/util/sort_heap_test.cpp                    |    5 -
 be/test/util/string_parser_test.cpp                |   11 -
 be/test/util/string_util_test.cpp                  |  158 ++-
 be/test/util/system_metrics_test.cpp               |  169 ++-
 be/test/util/tdigest_test.cpp                      |   29 +-
 be/test/util/thread_group_test.cpp                 |   81 --
 be/test/util/thread_pool_test.cpp                  |   84 --
 be/test/util/thread_test.cpp                       |   29 +-
 be/test/util/threadpool_test.cpp                   |  290 ++--
 be/test/util/trace_test.cpp                        |    7 +-
 be/test/util/tuple_row_zorder_compare_test.cpp     | 1402 ++++++++++----------
 be/test/util/uid_util_test.cpp                     |   40 +-
 be/test/util/url_coding_test.cpp                   |   11 -
 be/test/util/utf8_check_test.cpp                   |   16 +-
 be/test/util/zip_util_test.cpp                     |   64 +-
 be/test/vec/aggregate_functions/CMakeLists.txt     |   23 -
 .../aggregate_functions/agg_min_max_by_test.cpp    |    6 +-
 .../vec/aggregate_functions/agg_min_max_test.cpp   |   11 +-
 be/test/vec/aggregate_functions/agg_test.cpp       |    9 +-
 .../aggregate_functions/vec_window_funnel_test.cpp |  115 +-
 be/test/vec/core/CMakeLists.txt                    |   24 -
 be/test/vec/core/block_test.cpp                    |   66 +-
 be/test/vec/core/column_complex_test.cpp           |   11 +-
 be/test/vec/core/column_nullable_test.cpp          |   16 +-
 be/test/vec/exec/CMakeLists.txt                    |   21 -
 be/test/vec/exec/vgeneric_iterators_test.cpp       |  133 +-
 be/test/vec/exprs/CMakeLists.txt                   |   22 -
 be/test/vec/exprs/vexpr_test.cpp                   |   23 +-
 be/test/vec/function/CMakeLists.txt                |   32 -
 be/test/vec/function/function_arithmetic_test.cpp  |    6 -
 be/test/vec/function/function_bitmap_test.cpp      |    5 -
 be/test/vec/function/function_comparison_test.cpp  |   13 +-
 be/test/vec/function/function_geo_test.cpp         |  194 ++-
 be/test/vec/function/function_hash_test.cpp        |    5 -
 be/test/vec/function/function_ifnull_test.cpp      |    5 -
 be/test/vec/function/function_json_test.cpp        |    5 -
 be/test/vec/function/function_like_test.cpp        |   78 +-
 be/test/vec/function/function_math_test.cpp        |   32 +-
 be/test/vec/function/function_nullif_test.cpp      |    5 -
 be/test/vec/function/function_string_test.cpp      |  478 +++----
 .../function/function_test_util.cpp}               |   21 +-
 be/test/vec/function/function_test_util.h          |   21 +-
 be/test/vec/function/function_time_test.cpp        |  101 +-
 be/test/vec/runtime/CMakeLists.txt                 |   22 -
 be/test/vec/runtime/vdata_stream_test.cpp          |   14 +-
 run-be-ut.sh                                       |   83 +-
 333 files changed, 10958 insertions(+), 14044 deletions(-)

diff --git a/be/CMakeLists.txt b/be/CMakeLists.txt
index 28985b1d53..dacb1f4adf 100644
--- a/be/CMakeLists.txt
+++ b/be/CMakeLists.txt
@@ -551,12 +551,6 @@ set(DORIS_LINK_LIBS
     Vec
     ${WL_END_GROUP}
 )
-if (${MAKE_TEST} STREQUAL "ON")
-    set(DORIS_LINK_LIBS
-        ${DORIS_LINK_LIBS}
-        TestUtil
-    )
-endif()
 
 
 # COMMON_THIRDPARTY are thirdparty dependencies that can run on all platform
@@ -697,7 +691,6 @@ set(DORIS_LINK_LIBS ${DORIS_LINK_LIBS}
 # Set libraries for test
 set (TEST_LINK_LIBS ${DORIS_LINK_LIBS}
     ${WL_START_GROUP}
-    Test_util
     gmock
     gtest
     ${WL_END_GROUP}
@@ -714,7 +707,6 @@ if (${MAKE_TEST} STREQUAL "ON")
     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage -DGTEST_USE_OWN_TR1_TUPLE=0")
     SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage -lgcov")
     add_definitions(-DBE_TEST)
-    add_subdirectory(${SRC_DIR}/testutil)
 endif ()
 
 add_subdirectory(${SRC_DIR}/agent)
@@ -738,46 +730,8 @@ endif()
 add_subdirectory(${SRC_DIR}/util)
 add_subdirectory(${SRC_DIR}/vec)
 
-# Utility CMake function to make specifying tests and benchmarks less verbose
-FUNCTION(ADD_BE_TEST TEST_NAME)
-    # use argn to add additional files
-    set(ADDITIONAL_FILES ${ARGN})
-    set(BUILD_OUTPUT_ROOT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/")
-    # This gets the directory where the test is from (e.g. 'exprs' or 'runtime')
-    get_filename_component(DIR_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)
-    get_filename_component(TEST_DIR_NAME ${TEST_NAME} PATH)
-    get_filename_component(TEST_FILE_NAME ${TEST_NAME} NAME)
-
-    ADD_EXECUTABLE(${TEST_FILE_NAME} ${TEST_NAME}.cpp ${ADDITIONAL_FILES})
-    TARGET_LINK_LIBRARIES(${TEST_FILE_NAME} ${TEST_LINK_LIBS})
-    SET_TARGET_PROPERTIES(${TEST_FILE_NAME} PROPERTIES COMPILE_FLAGS "-fno-access-control" ENABLE_EXPORTS 1)
-    if (NOT "${TEST_DIR_NAME}" STREQUAL "")
-        SET_TARGET_PROPERTIES(${TEST_FILE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${BUILD_OUTPUT_ROOT_DIRECTORY}/${TEST_DIR_NAME}")
-    endif()
-    ADD_TEST(${TEST_FILE_NAME} "${BUILD_OUTPUT_ROOT_DIRECTORY}/${TEST_NAME}")
-ENDFUNCTION()
-
 if (${MAKE_TEST} STREQUAL "ON")
-    add_subdirectory(${TEST_DIR}/test_util)
-    add_subdirectory(${TEST_DIR}/agent)
-    add_subdirectory(${TEST_DIR}/common)
-    add_subdirectory(${TEST_DIR}/env)
-    add_subdirectory(${TEST_DIR}/exec)
-    add_subdirectory(${TEST_DIR}/exprs)
-    add_subdirectory(${TEST_DIR}/geo)
-    add_subdirectory(${TEST_DIR}/gutil)
-    add_subdirectory(${TEST_DIR}/http)
-    add_subdirectory(${TEST_DIR}/olap)
-    add_subdirectory(${TEST_DIR}/runtime)
-    add_subdirectory(${TEST_DIR}/udf)
-    add_subdirectory(${TEST_DIR}/util)
-    add_subdirectory(${TEST_DIR}/vec/core)
-    add_subdirectory(${TEST_DIR}/vec/exec)
-    add_subdirectory(${TEST_DIR}/vec/exprs)
-    add_subdirectory(${TEST_DIR}/vec/function)
-    add_subdirectory(${TEST_DIR}/vec/runtime)
-    add_subdirectory(${TEST_DIR}/vec/aggregate_functions)
-    add_subdirectory(${TEST_DIR}/tools)
+    add_subdirectory(${TEST_DIR})
 endif ()
 
 # Install be
diff --git a/be/src/olap/storage_engine.cpp b/be/src/olap/storage_engine.cpp
index c3d139ed6f..5d01e6560b 100644
--- a/be/src/olap/storage_engine.cpp
+++ b/be/src/olap/storage_engine.cpp
@@ -128,9 +128,7 @@ StorageEngine::StorageEngine(const EngineOptions& options)
           _default_rowset_type(BETA_ROWSET),
           _heartbeat_flags(nullptr),
           _stream_load_recorder(nullptr) {
-    if (_s_instance == nullptr) {
-        _s_instance = this;
-    }
+    _s_instance = this;
     REGISTER_HOOK_METRIC(unused_rowsets_count, [this]() {
         MutexLock lock(&_gc_mutex);
         return _unused_rowsets.size();
diff --git a/be/src/runtime/user_function_cache.cpp b/be/src/runtime/user_function_cache.cpp
index aa1086e8f7..17e9d58e85 100644
--- a/be/src/runtime/user_function_cache.cpp
+++ b/be/src/runtime/user_function_cache.cpp
@@ -112,7 +112,10 @@ UserFunctionCache* UserFunctionCache::instance() {
 }
 
 Status UserFunctionCache::init(const std::string& lib_dir) {
-    DCHECK(_lib_dir.empty());
+#ifndef BE_TEST
+    // _lib_dir may reuesd bettween unit tests
+    DCHECK(_lib_dir.empty()) << _lib_dir;
+#endif
     _lib_dir = lib_dir;
     // 1. dynamic open current process
     RETURN_IF_ERROR(dynamic_open(nullptr, &_current_process_handle));
diff --git a/be/src/util/core_local.h b/be/src/util/core_local.h
index 147bf0e195..2fa6c39d46 100644
--- a/be/src/util/core_local.h
+++ b/be/src/util/core_local.h
@@ -132,6 +132,19 @@ public:
     }
     inline T* access_at_core(size_t core_idx) const { return _values[core_idx]; }
 
+    inline void reset() {
+        for (int i = 0; i < _size; ++i) {
+            _values[i]->~T();
+        }
+        _values.clear();
+        _values.resize(_size, nullptr);
+        CoreLocalValueController<T>* controller = CoreLocalValueController<T>::instance();
+        for (int i = 0; i < _size; ++i) {
+            void* ptr = controller->allocator(i)->get_or_create(_id);
+            _values[i] = new (ptr) T();
+        }
+    }
+
 private:
     int _id = -1;
     size_t _size = 0;
diff --git a/be/src/util/metrics.cpp b/be/src/util/metrics.cpp
index a60384d067..f5447ef77d 100644
--- a/be/src/util/metrics.cpp
+++ b/be/src/util/metrics.cpp
@@ -251,7 +251,9 @@ Metric* MetricEntity::get_metric(const std::string& name, const std::string& gro
 
 void MetricEntity::register_hook(const std::string& name, const std::function<void()>& hook) {
     std::lock_guard<SpinLock> l(_lock);
+#ifndef BE_TEST
     DCHECK(_hooks.find(name) == _hooks.end()) << "hook is already exist! " << _name << ":" << name;
+#endif
     _hooks.emplace(name, hook);
 }
 
diff --git a/be/src/util/metrics.h b/be/src/util/metrics.h
index c5b005f0e6..24a640b3f0 100644
--- a/be/src/util/metrics.h
+++ b/be/src/util/metrics.h
@@ -162,6 +162,8 @@ public:
 
     void increment(const T& delta) { __sync_fetch_and_add(_value.access(), delta); }
 
+    void reset() { _value.reset(); }
+
     rj::Value to_json_value(rj::Document::AllocatorType& allocator) const override {
         return rj::Value(value());
     }
diff --git a/be/test/CMakeLists.txt b/be/test/CMakeLists.txt
new file mode 100644
index 0000000000..93966d2a20
--- /dev/null
+++ b/be/test/CMakeLists.txt
@@ -0,0 +1,384 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# where to put generated libraries
+set(LIBRARY_OUTPUT_PATH "${BUILD_DIR}/test")
+
+# where to put generated libraries
+set(EXECUTABLE_OUTPUT_PATH "${BUILD_DIR}/test")
+
+set(AGENT_TEST_FILES
+    agent/utils_test.cpp
+    # agent/agent_server_test.cpp
+    # agent/cgroups_mgr_test.cpp
+    # agent/heartbeat_server_test.cpp
+)
+set(COMMON_TEST_FILES
+    common/resource_tls_test.cpp
+    common/status_test.cpp
+    common/config_test.cpp
+)
+set(ENV_TEST_FILES
+    env/env_posix_test.cpp
+)
+
+set(EXEC_TEST_FILES
+    exec/hash_table_test.cpp
+    exec/olap_common_test.cpp
+    exec/json_scanner_test.cpp
+    exec/json_scanner_with_jsonpath_test.cpp
+    exec/parquet_scanner_test.cpp
+    exec/orc_scanner_test.cpp
+    exec/plain_text_line_reader_uncompressed_test.cpp
+    exec/plain_text_line_reader_gzip_test.cpp
+    exec/plain_text_line_reader_bzip_test.cpp
+    exec/plain_text_line_reader_lz4frame_test.cpp
+    exec/broker_scanner_test.cpp
+    exec/broker_scan_node_test.cpp
+    exec/tablet_info_test.cpp
+    exec/tablet_sink_test.cpp
+    exec/buffered_reader_test.cpp
+    exec/es_http_scan_node_test.cpp
+    exec/es_predicate_test.cpp
+    exec/es_query_builder_test.cpp
+    exec/es_scan_reader_test.cpp
+    exec/s3_reader_test.cpp
+    exec/multi_bytes_separator_test.cpp
+    # exec/hdfs_file_reader_test.cpp
+    # exec/new_olap_scan_node_test.cpp
+    # exec/pre_aggregation_node_test.cpp
+    # exec/partitioned_hash_table_test.cpp
+    # exec/olap_scanner_test.cpp
+    # exec/olap_meta_reader_test.cpp
+    # exec/olap_scan_node_test.cpp
+    # exec/mysql_scan_node_test.cpp
+    # exec/mysql_scanner_test.cpp
+    # exec/csv_scanner_test.cpp
+    # exec/csv_scan_node_test.cpp
+    # exec/csv_scan_bench_test.cpp
+    # exec/schema_scan_node_test.cpp
+    # exec/unix_odbc_test.cpp
+    # exec/schema_scanner_test.cpp
+    # exec/set_executor_test.cpp
+    # exec/schema_scanner/schema_authors_scanner_test.cpp
+    # exec/schema_scanner/schema_columns_scanner_test.cpp
+    # exec/schema_scanner/schema_create_table_scanner_test.cpp
+    # exec/schema_scanner/schema_open_tables_scanner_test.cpp
+    # exec/schema_scanner/schema_schemata_scanner_test.cpp
+    # exec/schema_scanner/schema_table_names_scanner_test.cpp
+    # exec/schema_scanner/schema_tables_scanner_test.cpp
+    # exec/schema_scanner/schema_variables_scanner_test.cpp
+    # exec/schema_scanner/schema_engines_scanner_test.cpp
+    # exec/schema_scanner/schema_collations_scanner_test.cpp
+    # exec/schema_scanner/schema_charsets_scanner_test.cpp
+    # exec/broker_reader_test.cpp
+    # exec/es_scan_node_test.cpp
+)
+
+if(DEFINED DORIS_WITH_LZO)
+    set(EXEC_TEST_FILES ${EXEC_FILES} exec/plain_text_line_reader_lzop_test.cpp)
+endif()
+
+set(EXPRS_TEST_FILES
+    # exprs/binary_predicate_test.cpp
+    # exprs/in_predicate_test.cpp
+    # exprs/expr-test.cpp
+    # exprs/hybrid_set_test.cpp
+    # exprs/in-predicate-test.cpp
+    exprs/json_function_test.cpp
+    exprs/string_functions_test.cpp
+    exprs/timestamp_functions_test.cpp
+    exprs/percentile_approx_test.cpp
+    exprs/percentile_test.cpp
+    exprs/bitmap_function_test.cpp
+    exprs/hll_function_test.cpp
+    exprs/encryption_functions_test.cpp
+    exprs/math_functions_test.cpp
+    exprs/topn_function_test.cpp
+    exprs/runtime_filter_test.cpp
+    exprs/bloom_filter_predicate_test.cpp
+    exprs/array_functions_test.cpp
+    exprs/window_funnel_test.cpp
+)
+set(GEO_TEST_FILES
+    geo/wkt_parse_test.cpp
+    geo/geo_functions_test.cpp
+    geo/geo_types_test.cpp
+)
+set(GUTIL_TEST_FILES
+    gutil/strings/numbers_test.cpp
+)
+set(HTTP_TEST_FILES
+    http/message_body_sink_test.cpp
+    http/http_utils_test.cpp
+    http/http_client_test.cpp
+    # TODO this will overide HttpChannel and make other test failed
+    # http/stream_load_test.cpp
+    # http/metrics_action_test.cpp
+)
+set(OLAP_TEST_FILES
+    olap/schema_change_test.cpp
+    olap/timestamped_version_tracker_test.cpp
+    olap/tablet_schema_helper.cpp
+    olap/delta_writer_test.cpp
+    olap/delete_handler_test.cpp
+    olap/row_block_test.cpp
+    olap/row_block_v2_test.cpp
+    olap/bit_field_test.cpp
+    olap/byte_buffer_test.cpp
+    olap/run_length_byte_test.cpp
+    olap/run_length_integer_test.cpp
+    olap/stream_index_test.cpp
+    olap/lru_cache_test.cpp
+    olap/bloom_filter_test.cpp
+    olap/bloom_filter_column_predicate_test.cpp
+    olap/bloom_filter_index_test.cpp
+    olap/comparison_predicate_test.cpp
+    olap/in_list_predicate_test.cpp
+    olap/null_predicate_test.cpp
+    olap/file_helper_test.cpp
+    olap/file_utils_test.cpp
+    olap/column_reader_test.cpp
+    olap/cumulative_compaction_policy_test.cpp
+    olap/row_cursor_test.cpp
+    olap/skiplist_test.cpp
+    olap/serialize_test.cpp
+    olap/olap_meta_test.cpp
+    olap/decimal12_test.cpp
+    olap/column_vector_test.cpp
+    olap/storage_types_test.cpp
+    olap/aggregate_func_test.cpp
+    olap/rowset/segment_v2/bitshuffle_page_test.cpp
+    olap/rowset/segment_v2/plain_page_test.cpp
+    olap/rowset/segment_v2/bitmap_index_test.cpp
+    olap/rowset/segment_v2/binary_plain_page_test.cpp
+    olap/rowset/segment_v2/binary_prefix_page_test.cpp
+    olap/rowset/segment_v2/column_reader_writer_test.cpp
+    olap/rowset/segment_v2/encoding_info_test.cpp
+    olap/rowset/segment_v2/ordinal_page_index_test.cpp
+    olap/rowset/segment_v2/rle_page_test.cpp
+    olap/rowset/segment_v2/binary_dict_page_test.cpp
+    olap/rowset/segment_v2/segment_test.cpp
+    olap/rowset/segment_v2/row_ranges_test.cpp
+    olap/rowset/segment_v2/frame_of_reference_page_test.cpp
+    olap/rowset/segment_v2/block_bloom_filter_test.cpp
+    olap/rowset/segment_v2/bloom_filter_index_reader_writer_test.cpp
+    olap/rowset/segment_v2/zone_map_index_test.cpp
+    olap/tablet_meta_test.cpp
+    olap/tablet_meta_manager_test.cpp
+    olap/tablet_mgr_test.cpp
+    olap/tablet_test.cpp
+    olap/rowset/rowset_meta_manager_test.cpp
+    olap/rowset/rowset_meta_test.cpp
+    olap/rowset/alpha_rowset_test.cpp
+    olap/rowset/beta_rowset_test.cpp
+    olap/rowset/unique_rowset_id_generator_test.cpp
+    olap/txn_manager_test.cpp
+    olap/generic_iterators_test.cpp
+    olap/key_coder_test.cpp
+    olap/short_key_index_test.cpp
+    olap/page_cache_test.cpp
+    olap/hll_test.cpp
+    olap/selection_vector_test.cpp
+    olap/block_column_predicate_test.cpp
+    olap/options_test.cpp
+    olap/fs/file_block_manager_test.cpp
+    olap/common_test.cpp
+    olap/memory/column_delta_test.cpp
+    olap/memory/column_test.cpp
+    olap/memory/hash_index_test.cpp
+    olap/memory/mem_tablet_test.cpp
+    olap/memory/schema_test.cpp
+    olap/memory/partial_row_batch_test.cpp
+    # olap/rowset/rowset_converter_test.cpp
+    # olap/memtable_flush_executor_test.cpp
+    # olap/push_handler_test.cpp
+)
+set(PLUGIN_TEST_FILES
+    # plugin/plugin_zip_test.cpp
+    # plugin/plugin_loader_test.cpp
+    # plugin/plugin_mgr_test.cpp
+)
+set(RUNTIME_TEST_FILES
+    # runtime/buffered_tuple_stream_test.cpp
+    # runtime/sorter_test.cpp
+    # runtime/buffer_control_block_test.cpp
+    # runtime/result_buffer_mgr_test.cpp
+    # runtime/result_sink_test.cpp
+    # runtime/data_stream_test.cpp
+    # runtime/parallel_executor_test.cpp
+    # runtime/datetime_value_test.cpp
+    # runtime/dpp_sink_internal_test.cpp
+    # runtime/dpp_sink_test.cpp
+    # runtime/data_spliter_test.cpp
+    # runtime/etl_job_mgr_test.cpp
+    # runtime/tmp_file_mgr_test.cpp
+    # runtime/disk_io_mgr_test.cpp
+    # runtime/thread_resource_mgr_test.cpp
+    # runtime/qsorter_test.cpp
+    # runtime/buffered_block_mgr2_test.cpp
+    # runtime/buffered_tuple_stream2_test.cpp
+    # runtime/export_task_mgr_test.cpp
+    # runtime/minidump_test.cpp
+    runtime/mem_pool_test.cpp
+    runtime/string_buffer_test.cpp
+    runtime/decimalv2_value_test.cpp
+    runtime/large_int_value_test.cpp
+    runtime/string_value_test.cpp
+    runtime/fragment_mgr_test.cpp
+    runtime/mem_limit_test.cpp
+    runtime/stream_load_pipe_test.cpp
+    # TODO this test will override DeltaWriter, will make other test failed
+    # runtime/load_channel_mgr_test.cpp
+    runtime/snapshot_loader_test.cpp
+    runtime/user_function_cache_test.cpp
+    runtime/kafka_consumer_pipe_test.cpp
+    runtime/routine_load_task_executor_test.cpp
+    runtime/small_file_mgr_test.cpp
+    runtime/heartbeat_flags_test.cpp
+    runtime/result_queue_mgr_test.cpp
+    runtime/memory_scratch_sink_test.cpp
+    runtime/test_env.cc
+    runtime/external_scan_context_mgr_test.cpp
+    runtime/memory/chunk_allocator_test.cpp
+    runtime/memory/system_allocator_test.cpp
+    runtime/cache/partition_cache_test.cpp
+    runtime/collection_value_test.cpp
+)
+set(TESTUTIL_TEST_FILES
+    testutil/test_util.cpp
+    testutil/desc_tbl_builder.cc
+    testutil/function_utils.cpp
+    testutil/run_all_tests.cpp
+)
+set(UDF_TEST_FILES
+    # udf/udf_test.cpp
+    # udf/uda_test.cpp
+)
+set(UTIL_TEST_FILES
+    util/bit_util_test.cpp
+    util/brpc_client_cache_test.cpp
+    util/path_trie_test.cpp
+    util/coding_test.cpp
+    util/crc32c_test.cpp
+    util/lru_cache_util_test.cpp
+    util/filesystem_util_test.cpp
+    util/internal_queue_test.cpp
+    util/cidr_test.cpp
+    util/metrics_test.cpp
+    util/doris_metrics_test.cpp
+    util/system_metrics_test.cpp
+    util/string_util_test.cpp
+    util/string_parser_test.cpp
+    util/core_local_test.cpp
+    util/json_util_test.cpp
+    util/byte_buffer2_test.cpp
+    util/uid_util_test.cpp
+    util/encryption_util_test.cpp
+    util/md5_test.cpp
+    util/sm3_test.cpp
+    util/bitmap_test.cpp
+    util/bitmap_value_test.cpp
+    util/faststring_test.cpp
+    util/rle_encoding_test.cpp
+    util/tdigest_test.cpp
+    util/block_compression_test.cpp
+    util/arrow/arrow_row_block_test.cpp
+    util/arrow/arrow_row_batch_test.cpp
+    util/arrow/arrow_work_flow_test.cpp
+    util/counter_cond_variable_test.cpp
+    util/frame_of_reference_coding_test.cpp
+    util/bit_stream_utils_test.cpp
+    util/radix_sort_test.cpp
+    util/zip_util_test.cpp
+    util/utf8_check_test.cpp
+    util/cgroup_util_test.cpp
+    util/path_util_test.cpp
+    util/file_cache_test.cpp
+    util/parse_util_test.cpp
+    util/countdown_latch_test.cpp
+    util/monotime_test.cpp
+    util/scoped_cleanup_test.cpp
+    util/thread_test.cpp
+    util/threadpool_test.cpp
+    util/mysql_row_buffer_test.cpp
+    util/trace_test.cpp
+    util/easy_json-test.cpp
+    util/http_channel_test.cpp
+    util/histogram_test.cpp
+    util/s3_uri_test.cpp
+    util/s3_storage_backend_test.cpp
+    util/broker_storage_backend_test.cpp
+    util/sort_heap_test.cpp
+    util/counts_test.cpp
+    util/date_func_test.cpp
+    util/tuple_row_zorder_compare_test.cpp
+)
+set(VEC_TEST_FILES
+    vec/aggregate_functions/agg_test.cpp
+    vec/aggregate_functions/agg_min_max_test.cpp
+    vec/aggregate_functions/vec_window_funnel_test.cpp
+    vec/core/block_test.cpp
+    vec/core/column_complex_test.cpp
+    vec/core/column_nullable_test.cpp
+    vec/exec/vgeneric_iterators_test.cpp
+    vec/exprs/vexpr_test.cpp
+    vec/function/function_bitmap_test.cpp
+    vec/function/function_comparison_test.cpp
+    vec/function/function_hash_test.cpp
+    vec/function/function_math_test.cpp
+    vec/function/function_string_test.cpp
+    vec/function/function_time_test.cpp
+    vec/function/function_ifnull_test.cpp
+    vec/function/function_nullif_test.cpp
+    vec/function/function_like_test.cpp
+    vec/function/function_arithmetic_test.cpp
+    vec/function/function_json_test.cpp
+    vec/function/function_geo_test.cpp
+    vec/function/function_test_util.cpp
+    vec/runtime/vdata_stream_test.cpp
+)
+
+add_executable(doris_be_test
+    ${AGENT_TEST_FILES}
+    ${COMMON_TEST_FILES}
+    ${ENV_TEST_FILES}
+    ${EXEC_TEST_FILES}
+    ${EXPRS_TEST_FILES}
+    ${GEO_TEST_FILES}
+    ${GUTIL_TEST_FILES}
+    ${HTTP_TEST_FILES}
+    ${OLAP_TEST_FILES}
+    ${PLUGIN_TEST_FILES}
+    ${RUNTIME_TEST_FILES}
+    ${TESTUTIL_TEST_FILES}
+    ${UDF_TEST_FILES}
+    ${UTIL_TEST_FILES}
+    ${VEC_TEST_FILES}
+)
+
+target_link_libraries(doris_be_test ${TEST_LINK_LIBS})
+set_target_properties(doris_be_test PROPERTIES COMPILE_FLAGS "-fno-access-control" ENABLE_EXPORTS 1)
+
+add_executable(benchmark_tool
+    tools/benchmark_tool.cpp
+    testutil/test_util.cpp
+    olap/tablet_schema_helper.cpp
+)
+
+target_link_libraries(benchmark_tool ${TEST_LINK_LIBS})
+set_target_properties(benchmark_tool PROPERTIES COMPILE_FLAGS "-fno-access-control")
diff --git a/be/test/agent/CMakeLists.txt b/be/test/agent/CMakeLists.txt
deleted file mode 100644
index 5f88055a9f..0000000000
--- a/be/test/agent/CMakeLists.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# where to put generated libraries
-set(LIBRARY_OUTPUT_PATH "${BUILD_DIR}/test/agent")
-
-# where to put generated binaries
-set(EXECUTABLE_OUTPUT_PATH "${BUILD_DIR}/test/agent")
-
-#ADD_BE_TEST(agent_server_test) 
-#ADD_BE_TEST(cgroups_mgr_test)
-#ADD_BE_TEST(heartbeat_server_test)
-ADD_BE_TEST(utils_test)
diff --git a/be/test/agent/agent_server_test.cpp b/be/test/agent/agent_server_test.cpp
index dc5d282c94..0f2d4d240a 100644
--- a/be/test/agent/agent_server_test.cpp
+++ b/be/test/agent/agent_server_test.cpp
@@ -177,14 +177,3 @@ TEST(ReleaseSnapshotTest, TestReleaseSnapshot) {
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/agent/cgroups_mgr_test.cpp b/be/test/agent/cgroups_mgr_test.cpp
index bf27a5120d..9e5e002d29 100644
--- a/be/test/agent/cgroups_mgr_test.cpp
+++ b/be/test/agent/cgroups_mgr_test.cpp
@@ -42,9 +42,9 @@ class CgroupsMgrTest : public testing::Test {
 public:
     // create a mock cgroup folder
     static void SetUpTestCase() {
-        ASSERT_TRUE(std::filesystem::remove_all(_s_cgroup_path));
+        EXPECT_TRUE(std::filesystem::remove_all(_s_cgroup_path));
         // create a mock cgroup path
-        ASSERT_TRUE(std::filesystem::create_directory(_s_cgroup_path));
+        EXPECT_TRUE(std::filesystem::create_directory(_s_cgroup_path));
 
         std::vector<StorePath> paths;
         paths.emplace_back(config::storage_root_path, -1);
@@ -52,11 +52,11 @@ public:
         doris::EngineOptions options;
         options.store_paths = paths;
         Status s = doris::StorageEngine::open(options, &k_engine);
-        ASSERT_TRUE(s.ok()) << s.to_string();
+        EXPECT_TRUE(s.ok()) << s.to_string();
     }
 
     // delete the mock cgroup folder
-    static void TearDownTestCase() { ASSERT_TRUE(std::filesystem::remove_all(_s_cgroup_path)); }
+    static void TearDownTestCase() { EXPECT_TRUE(std::filesystem::remove_all(_s_cgroup_path)); }
 
     // test if a file contains specific number
     static bool does_contain_number(const std::string& file_path, int32_t number) {
@@ -80,28 +80,28 @@ CgroupsMgr CgroupsMgrTest::_s_cgroups_mgr(nullptr, CgroupsMgrTest::_s_cgroup_pat
 TEST_F(CgroupsMgrTest, TestIsDirectory) {
     // test folder exist
     bool exist = _s_cgroups_mgr.is_directory(CgroupsMgrTest::_s_cgroup_path.c_str());
-    ASSERT_TRUE(exist);
+    EXPECT_TRUE(exist);
     // test folder not exist
     bool not_exist = _s_cgroups_mgr.is_directory("./abc");
-    ASSERT_FALSE(not_exist);
+    EXPECT_FALSE(not_exist);
     // test file exist, but not folder
     bool not_folder = _s_cgroups_mgr.is_directory("/etc/profile");
-    ASSERT_FALSE(not_folder);
+    EXPECT_FALSE(not_folder);
 }
 
 TEST_F(CgroupsMgrTest, TestIsFileExist) {
     // test file exist
     bool exist = _s_cgroups_mgr.is_file_exist(CgroupsMgrTest::_s_cgroup_path.c_str());
-    ASSERT_TRUE(exist);
+    EXPECT_TRUE(exist);
     // test file not exist
     bool not_exist = _s_cgroups_mgr.is_file_exist("./abc");
-    ASSERT_FALSE(not_exist);
+    EXPECT_FALSE(not_exist);
 }
 
 TEST_F(CgroupsMgrTest, TestInitCgroups) {
     // test for task file not exist
     Status op_status = _s_cgroups_mgr.init_cgroups();
-    ASSERT_EQ(Status::DORIS_ERROR, op_status);
+    EXPECT_EQ(Status::DORIS_ERROR, op_status);
 
     // create task file, then init should success
     std::string task_file_path = _s_cgroup_path + "/tasks";
@@ -110,51 +110,51 @@ TEST_F(CgroupsMgrTest, TestInitCgroups) {
     outfile.close();
 
     // create a mock user under cgroup path
-    ASSERT_TRUE(std::filesystem::create_directory(_s_cgroup_path + "/yiguolei"));
+    EXPECT_TRUE(std::filesystem::create_directory(_s_cgroup_path + "/yiguolei"));
     std::ofstream user_out_file(_s_cgroup_path + "/yiguolei/tasks");
     user_out_file << 123 << std::endl;
     user_out_file.close();
 
     // create a mock user group under cgroup path
-    ASSERT_TRUE(std::filesystem::create_directory(_s_cgroup_path + "/yiguolei/low"));
+    EXPECT_TRUE(std::filesystem::create_directory(_s_cgroup_path + "/yiguolei/low"));
     std::ofstream group_out_file(CgroupsMgrTest::_s_cgroup_path + "/yiguolei/low/tasks");
     group_out_file << 456 << std::endl;
     group_out_file.close();
 
     op_status = _s_cgroups_mgr.init_cgroups();
     // init should be successful
-    ASSERT_EQ(Status::OK(), op_status);
+    EXPECT_EQ(Status::OK(), op_status);
     // all tasks should be migrated to root cgroup path
-    ASSERT_TRUE(does_contain_number(task_file_path, 1111111));
-    ASSERT_TRUE(does_contain_number(task_file_path, 123));
-    ASSERT_TRUE(does_contain_number(task_file_path, 456));
+    EXPECT_TRUE(does_contain_number(task_file_path, 1111111));
+    EXPECT_TRUE(does_contain_number(task_file_path, 123));
+    EXPECT_TRUE(does_contain_number(task_file_path, 456));
 }
 
 TEST_F(CgroupsMgrTest, TestAssignThreadToCgroups) {
     // default cgroup not exist, so that assign to an unknown user will fail
     Status op_status = _s_cgroups_mgr.assign_thread_to_cgroups(111, "abc", "low");
-    ASSERT_EQ(Status::DORIS_ERROR, op_status);
+    EXPECT_EQ(Status::DORIS_ERROR, op_status);
     // user cgroup exist
     // create a mock user under cgroup path
-    ASSERT_TRUE(std::filesystem::create_directory(_s_cgroup_path + "/yiguolei2"));
+    EXPECT_TRUE(std::filesystem::create_directory(_s_cgroup_path + "/yiguolei2"));
     std::ofstream user_out_file(_s_cgroup_path + "/yiguolei2/tasks");
     user_out_file << 123 << std::endl;
     user_out_file.close();
 
     op_status = _s_cgroups_mgr.assign_thread_to_cgroups(111, "yiguolei2", "aaaa");
-    ASSERT_EQ(Status::OK(), op_status);
-    ASSERT_TRUE(does_contain_number(_s_cgroup_path + "/yiguolei2/tasks", 111));
+    EXPECT_EQ(Status::OK(), op_status);
+    EXPECT_TRUE(does_contain_number(_s_cgroup_path + "/yiguolei2/tasks", 111));
 
     // user,level cgroup exist
     // create a mock user group under cgroup path
-    ASSERT_TRUE(std::filesystem::create_directory(_s_cgroup_path + "/yiguolei2/low"));
+    EXPECT_TRUE(std::filesystem::create_directory(_s_cgroup_path + "/yiguolei2/low"));
     std::ofstream group_out_file(_s_cgroup_path + "/yiguolei2/low/tasks");
     group_out_file << 456 << std::endl;
     group_out_file.close();
 
     op_status = _s_cgroups_mgr.assign_thread_to_cgroups(111, "yiguolei2", "low");
-    ASSERT_EQ(Status::OK(), op_status);
-    ASSERT_TRUE(does_contain_number(_s_cgroup_path + "/yiguolei2/low/tasks", 111));
+    EXPECT_EQ(Status::OK(), op_status);
+    EXPECT_TRUE(does_contain_number(_s_cgroup_path + "/yiguolei2/low/tasks", 111));
 }
 
 TEST_F(CgroupsMgrTest, TestModifyUserCgroups) {
@@ -165,10 +165,10 @@ TEST_F(CgroupsMgrTest, TestModifyUserCgroups) {
     std::string user_name = "user_modify";
     Status op_status = _s_cgroups_mgr.modify_user_cgroups(user_name, user_share, level_share);
 
-    ASSERT_EQ(Status::OK(), op_status);
+    EXPECT_EQ(Status::OK(), op_status);
 
-    ASSERT_TRUE(does_contain_number(_s_cgroup_path + "/user_modify/cpu.shares", 100));
-    ASSERT_TRUE(does_contain_number(_s_cgroup_path + "/user_modify/low/cpu.shares", 100));
+    EXPECT_TRUE(does_contain_number(_s_cgroup_path + "/user_modify/cpu.shares", 100));
+    EXPECT_TRUE(does_contain_number(_s_cgroup_path + "/user_modify/low/cpu.shares", 100));
 }
 
 TEST_F(CgroupsMgrTest, TestUpdateLocalCgroups) {
@@ -186,23 +186,17 @@ TEST_F(CgroupsMgrTest, TestUpdateLocalCgroups) {
     user_resource_result.resourceByUser["yiguolei3"] = user_resource;
 
     Status op_status = _s_cgroups_mgr.update_local_cgroups(user_resource_result);
-    ASSERT_EQ(Status::OK(), op_status);
-    ASSERT_EQ(2, _s_cgroups_mgr._cur_version);
-    ASSERT_TRUE(does_contain_number(_s_cgroup_path + "/yiguolei3/cpu.shares", 100));
-    ASSERT_TRUE(does_contain_number(_s_cgroup_path + "/yiguolei3/low/cpu.shares", 123));
-    ASSERT_TRUE(does_contain_number(_s_cgroup_path + "/yiguolei3/normal/cpu.shares", 234));
+    EXPECT_EQ(Status::OK(), op_status);
+    EXPECT_EQ(2, _s_cgroups_mgr._cur_version);
+    EXPECT_TRUE(does_contain_number(_s_cgroup_path + "/yiguolei3/cpu.shares", 100));
+    EXPECT_TRUE(does_contain_number(_s_cgroup_path + "/yiguolei3/low/cpu.shares", 123));
+    EXPECT_TRUE(does_contain_number(_s_cgroup_path + "/yiguolei3/normal/cpu.shares", 234));
 }
 
 TEST_F(CgroupsMgrTest, TestRelocateTasks) {
     // create a source cgroup, add some taskid into it
     Status op_status = _s_cgroups_mgr.relocate_tasks("/a/b/c/d", _s_cgroup_path);
-    ASSERT_EQ(Status::DORIS_ERROR, op_status);
+    EXPECT_EQ(Status::DORIS_ERROR, op_status);
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/agent/heartbeat_server_test.cpp b/be/test/agent/heartbeat_server_test.cpp
index b27fb6c64d..4adeddf6f2 100644
--- a/be/test/agent/heartbeat_server_test.cpp
+++ b/be/test/agent/heartbeat_server_test.cpp
@@ -79,14 +79,3 @@ TEST(HeartbeatTest, TestHeartbeat) {
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/agent/utils_test.cpp b/be/test/agent/utils_test.cpp
index ddb3dc0420..700b0fd5cf 100644
--- a/be/test/agent/utils_test.cpp
+++ b/be/test/agent/utils_test.cpp
@@ -34,13 +34,7 @@ namespace doris {
 TEST(AgentUtilsTest, Test) {
     std::string host_name = BackendOptions::get_localhost();
     int cnt = std::count(host_name.begin(), host_name.end(), '.');
-    ASSERT_EQ(3, cnt);
+    EXPECT_EQ(3, cnt);
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    doris::BackendOptions::init();
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/common/CMakeLists.txt b/be/test/common/CMakeLists.txt
deleted file mode 100644
index 1b2dda8908..0000000000
--- a/be/test/common/CMakeLists.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# where to put generated libraries
-set(EXECUTABLE_OUTPUT_PATH "${BUILD_DIR}/test/common")
-
-ADD_BE_TEST(resource_tls_test)
-ADD_BE_TEST(status_test)
-ADD_BE_TEST(config_test)
-ADD_BE_TEST(config_validator_test)
diff --git a/be/test/common/config_test.cpp b/be/test/common/config_test.cpp
index 7d6eb42b14..e835d8313b 100644
--- a/be/test/common/config_test.cpp
+++ b/be/test/common/config_test.cpp
@@ -45,12 +45,12 @@ TEST_F(ConfigTest, DumpAllConfigs) {
     CONF_Int64s(cfg_std_vector_int64_t, "4294967296123,4294967296234,4294967296345");
     CONF_Strings(cfg_std_vector_std_string, "doris,config,test,string");
 
-    ASSERT_TRUE(config::init(nullptr, true));
+    EXPECT_TRUE(config::init(nullptr, true));
     std::stringstream ss;
     for (const auto& it : *(config::full_conf_map)) {
         ss << it.first << "=" << it.second << std::endl;
     }
-    ASSERT_EQ(
+    EXPECT_EQ(
             "cfg_bool_false=0\ncfg_bool_true=1\ncfg_double=123.456\ncfg_int16_t=2561\ncfg_int32_t="
             "65536123\ncfg_int64_t=4294967296123\ncfg_std_string=doris_config_test_string\ncfg_std_"
             "vector_bool=1, 0, 1\ncfg_std_vector_double=123.456, 123.457, "
@@ -69,72 +69,67 @@ TEST_F(ConfigTest, UpdateConfigs) {
     CONF_mInt64(cfg_int64_t, "4294967296123");
     CONF_String(cfg_std_string, "doris_config_test_string");
 
-    ASSERT_TRUE(config::init(nullptr, true));
+    EXPECT_TRUE(config::init(nullptr, true));
 
     // bool
-    ASSERT_FALSE(cfg_bool);
-    ASSERT_TRUE(config::set_config("cfg_bool", "true").ok());
-    ASSERT_TRUE(cfg_bool);
+    EXPECT_FALSE(cfg_bool);
+    EXPECT_TRUE(config::set_config("cfg_bool", "true").ok());
+    EXPECT_TRUE(cfg_bool);
 
     // double
-    ASSERT_EQ(cfg_double, 123.456);
-    ASSERT_TRUE(config::set_config("cfg_double", "654.321").ok());
-    ASSERT_EQ(cfg_double, 654.321);
+    EXPECT_EQ(cfg_double, 123.456);
+    EXPECT_TRUE(config::set_config("cfg_double", "654.321").ok());
+    EXPECT_EQ(cfg_double, 654.321);
 
     // int16
-    ASSERT_EQ(cfg_int16_t, 2561);
-    ASSERT_TRUE(config::set_config("cfg_int16_t", "2562").ok());
-    ASSERT_EQ(cfg_int16_t, 2562);
+    EXPECT_EQ(cfg_int16_t, 2561);
+    EXPECT_TRUE(config::set_config("cfg_int16_t", "2562").ok());
+    EXPECT_EQ(cfg_int16_t, 2562);
 
     // int32
-    ASSERT_EQ(cfg_int32_t, 65536123);
-    ASSERT_TRUE(config::set_config("cfg_int32_t", "65536124").ok());
-    ASSERT_EQ(cfg_int32_t, 65536124);
+    EXPECT_EQ(cfg_int32_t, 65536123);
+    EXPECT_TRUE(config::set_config("cfg_int32_t", "65536124").ok());
+    EXPECT_EQ(cfg_int32_t, 65536124);
 
     // int64
-    ASSERT_EQ(cfg_int64_t, 4294967296123);
-    ASSERT_TRUE(config::set_config("cfg_int64_t", "4294967296124").ok());
-    ASSERT_EQ(cfg_int64_t, 4294967296124);
+    EXPECT_EQ(cfg_int64_t, 4294967296123);
+    EXPECT_TRUE(config::set_config("cfg_int64_t", "4294967296124").ok());
+    EXPECT_EQ(cfg_int64_t, 4294967296124);
 
     // not exist
     Status s = config::set_config("cfg_not_exist", "123");
-    ASSERT_FALSE(s.ok());
-    ASSERT_EQ(s.to_string(), "Not found: 'cfg_not_exist' is not found");
+    EXPECT_FALSE(s.ok());
+    EXPECT_EQ(s.to_string(), "Not found: 'cfg_not_exist' is not found");
 
     // immutable
-    ASSERT_TRUE(cfg_bool_immutable);
+    EXPECT_TRUE(cfg_bool_immutable);
     s = config::set_config("cfg_bool_immutable", "false");
-    ASSERT_FALSE(s.ok());
-    ASSERT_EQ(s.to_string(), "Not supported: 'cfg_bool_immutable' is not support to modify");
-    ASSERT_TRUE(cfg_bool_immutable);
+    EXPECT_FALSE(s.ok());
+    EXPECT_EQ(s.to_string(), "Not supported: 'cfg_bool_immutable' is not support to modify");
+    EXPECT_TRUE(cfg_bool_immutable);
 
     // convert error
     s = config::set_config("cfg_bool", "falseeee");
-    ASSERT_FALSE(s.ok());
-    ASSERT_EQ(s.to_string(), "Invalid argument: convert 'falseeee' as bool failed");
-    ASSERT_TRUE(cfg_bool);
+    EXPECT_FALSE(s.ok());
+    EXPECT_EQ(s.to_string(), "Invalid argument: convert 'falseeee' as bool failed");
+    EXPECT_TRUE(cfg_bool);
 
     s = config::set_config("cfg_double", "");
-    ASSERT_FALSE(s.ok());
-    ASSERT_EQ(s.to_string(), "Invalid argument: convert '' as double failed");
-    ASSERT_EQ(cfg_double, 654.321);
+    EXPECT_FALSE(s.ok());
+    EXPECT_EQ(s.to_string(), "Invalid argument: convert '' as double failed");
+    EXPECT_EQ(cfg_double, 654.321);
 
     // convert error
     s = config::set_config("cfg_int32_t", "4294967296124");
-    ASSERT_FALSE(s.ok());
-    ASSERT_EQ(s.to_string(), "Invalid argument: convert '4294967296124' as int32_t failed");
-    ASSERT_EQ(cfg_int32_t, 65536124);
+    EXPECT_FALSE(s.ok());
+    EXPECT_EQ(s.to_string(), "Invalid argument: convert '4294967296124' as int32_t failed");
+    EXPECT_EQ(cfg_int32_t, 65536124);
 
     // not support
     s = config::set_config("cfg_std_string", "test");
-    ASSERT_FALSE(s.ok());
-    ASSERT_EQ(s.to_string(), "Not supported: 'cfg_std_string' is not support to modify");
-    ASSERT_EQ(cfg_std_string, "doris_config_test_string");
+    EXPECT_FALSE(s.ok());
+    EXPECT_EQ(s.to_string(), "Not supported: 'cfg_std_string' is not support to modify");
+    EXPECT_EQ(cfg_std_string, "doris_config_test_string");
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/common/config_validator_test.cpp b/be/test/common/config_validator_test.cpp
index 605f7cbb5a..ec8fa0fab5 100644
--- a/be/test/common/config_validator_test.cpp
+++ b/be/test/common/config_validator_test.cpp
@@ -27,33 +27,24 @@ namespace doris {
 using namespace config;
 
 CONF_mInt16(cfg_validator_1, "15");
-CONF_Validator(cfg_validator_1, [](int16_t config) -> bool {
-    return 0 <= config && config <= 10;
-});
+CONF_Validator(cfg_validator_1, [](int16_t config) -> bool { return 0 <= config && config <= 10; });
 
 CONF_mInt16(cfg_validator_2, "5");
-CONF_Validator(cfg_validator_2, [](int16_t config) -> bool {
-    return 0 <= config && config <= 10;
-});
+CONF_Validator(cfg_validator_2, [](int16_t config) -> bool { return 0 <= config && config <= 10; });
 
 TEST(ConfigValidatorTest, Validator) {
-    ASSERT_FALSE(config::init(nullptr, true));
+    EXPECT_FALSE(config::init(nullptr, true));
     config::Register::_s_field_map->erase("cfg_validator_1");
 
-    ASSERT_TRUE(config::init(nullptr, true));
+    EXPECT_TRUE(config::init(nullptr, true));
 
     Status s = config::set_config("cfg_validator_2", "15");
-    ASSERT_FALSE(s.ok());
-    ASSERT_EQ(s.to_string(), "Invalid argument: validate cfg_validator_2=15 failed");
-    ASSERT_EQ(cfg_validator_2, 5);
+    EXPECT_FALSE(s.ok());
+    EXPECT_EQ(s.to_string(), "Invalid argument: validate cfg_validator_2=15 failed");
+    EXPECT_EQ(cfg_validator_2, 5);
 
     s = config::set_config("cfg_validator_2", "8");
-    ASSERT_TRUE(s.ok());
-    ASSERT_EQ(cfg_validator_2, 8);
+    EXPECT_TRUE(s.ok());
+    EXPECT_EQ(cfg_validator_2, 8);
 }
 } // namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/common/resource_tls_test.cpp b/be/test/common/resource_tls_test.cpp
index a1fbc3cca8..8e9eeeeae7 100644
--- a/be/test/common/resource_tls_test.cpp
+++ b/be/test/common/resource_tls_test.cpp
@@ -28,31 +28,20 @@ namespace doris {
 class ResourceTlsTest : public testing::Test {};
 
 TEST_F(ResourceTlsTest, EmptyTest) {
-    ASSERT_TRUE(ResourceTls::get_resource_tls() == nullptr);
-    ASSERT_TRUE(ResourceTls::set_resource_tls((TResourceInfo*)1) != 0);
+    EXPECT_TRUE(ResourceTls::get_resource_tls() == nullptr);
+    EXPECT_TRUE(ResourceTls::set_resource_tls((TResourceInfo*)1) != 0);
 }
 
 TEST_F(ResourceTlsTest, NormalTest) {
     ResourceTls::init();
-    ASSERT_TRUE(ResourceTls::get_resource_tls() == nullptr);
+    EXPECT_TRUE(ResourceTls::get_resource_tls() == nullptr);
     TResourceInfo* info = new TResourceInfo();
     info->user = "testUser";
     info->group = "testGroup";
-    ASSERT_TRUE(ResourceTls::set_resource_tls(info) == 0);
+    EXPECT_TRUE(ResourceTls::set_resource_tls(info) == 0);
     TResourceInfo* getInfo = ResourceTls::get_resource_tls();
-    ASSERT_STREQ("testUser", getInfo->user.c_str());
-    ASSERT_STREQ("testGroup", getInfo->group.c_str());
+    EXPECT_STREQ("testUser", getInfo->user.c_str());
+    EXPECT_STREQ("testGroup", getInfo->group.c_str());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/common/status_test.cpp b/be/test/common/status_test.cpp
index df6afca325..f8d67666a6 100644
--- a/be/test/common/status_test.cpp
+++ b/be/test/common/status_test.cpp
@@ -29,52 +29,47 @@ class StatusTest : public testing::Test {};
 TEST_F(StatusTest, OK) {
     // default
     Status st;
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ("", st.get_error_msg());
-    ASSERT_EQ("OK", st.to_string());
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ("", st.get_error_msg());
+    EXPECT_EQ("OK", st.to_string());
     // copy
     {
         Status other = st;
-        ASSERT_TRUE(other.ok());
+        EXPECT_TRUE(other.ok());
     }
     // move assign
     st = Status();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // move construct
     {
         Status other = std::move(st);
-        ASSERT_TRUE(other.ok());
+        EXPECT_TRUE(other.ok());
     }
 }
 
 TEST_F(StatusTest, Error) {
     // default
     Status st = Status::InternalError("123");
-    ASSERT_FALSE(st.ok());
-    ASSERT_EQ("123", st.get_error_msg());
-    ASSERT_EQ("Internal error: 123", st.to_string());
+    EXPECT_FALSE(st.ok());
+    EXPECT_EQ("123", st.get_error_msg());
+    EXPECT_EQ("Internal error: 123", st.to_string());
     // copy
     {
         Status other = st;
-        ASSERT_FALSE(other.ok());
-        ASSERT_EQ("123", st.get_error_msg());
+        EXPECT_FALSE(other.ok());
+        EXPECT_EQ("123", st.get_error_msg());
     }
     // move assign
     st = Status::InternalError("456");
-    ASSERT_FALSE(st.ok());
-    ASSERT_EQ("456", st.get_error_msg());
+    EXPECT_FALSE(st.ok());
+    EXPECT_EQ("456", st.get_error_msg());
     // move construct
     {
         Status other = std::move(st);
-        ASSERT_FALSE(other.ok());
-        ASSERT_EQ("456", other.get_error_msg());
-        ASSERT_EQ("Internal error: 456", other.to_string());
+        EXPECT_FALSE(other.ok());
+        EXPECT_EQ("456", other.get_error_msg());
+        EXPECT_EQ("Internal error: 456", other.to_string());
     }
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/env/CMakeLists.txt b/be/test/env/CMakeLists.txt
deleted file mode 100644
index 04d8893543..0000000000
--- a/be/test/env/CMakeLists.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# where to put generated libraries
-set(EXECUTABLE_OUTPUT_PATH "${BUILD_DIR}/test/env")
-
-ADD_BE_TEST(env_posix_test)
diff --git a/be/test/env/env_posix_test.cpp b/be/test/env/env_posix_test.cpp
index 0503b01502..99f4587bf3 100644
--- a/be/test/env/env_posix_test.cpp
+++ b/be/test/env/env_posix_test.cpp
@@ -31,7 +31,7 @@ public:
     virtual ~EnvPosixTest() {}
     void SetUp() override {
         auto st = FileUtils::create_dir("./ut_dir/env_posix");
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
     }
     void TearDown() override {}
 };
@@ -44,8 +44,8 @@ TEST_F(EnvPosixTest, file_path_desc) {
     path_desc_stream << path_desc << "/test"
                      << "/" << 1;
     FilePathDesc dest_path_desc = path_desc_stream.path_desc();
-    ASSERT_EQ("/local/test/1", dest_path_desc.filepath);
-    ASSERT_EQ("/remote/test/1", dest_path_desc.remote_path);
+    EXPECT_EQ("/local/test/1", dest_path_desc.filepath);
+    EXPECT_EQ("/remote/test/1", dest_path_desc.remote_path);
 }
 
 TEST_F(EnvPosixTest, random_access) {
@@ -53,42 +53,42 @@ TEST_F(EnvPosixTest, random_access) {
     std::unique_ptr<WritableFile> wfile;
     auto env = Env::Default();
     auto st = env->new_writable_file(fname, &wfile);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = wfile->pre_allocate(1024);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // write data
     Slice field1("123456789");
     st = wfile->append(field1);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     std::string buf;
     for (int i = 0; i < 100; ++i) {
         buf.push_back((char)i);
     }
     st = wfile->append(buf);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     Slice abc("abc");
     Slice bcd("bcd");
     Slice slices[2] {abc, bcd};
     st = wfile->appendv(slices, 2);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = wfile->flush(WritableFile::FLUSH_ASYNC);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = wfile->sync();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = wfile->close();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
-    ASSERT_EQ(115, wfile->size());
+    EXPECT_EQ(115, wfile->size());
 
     uint64_t size;
     st = env->get_file_size(fname, &size);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(115, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(115, size);
     {
         char mem[1024];
         std::unique_ptr<RandomAccessFile> rfile;
         st = env->new_random_access_file(fname, &rfile);
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
 
         Slice slice1(mem, 9);
         Slice slice2(mem + 9, 100);
@@ -96,18 +96,18 @@ TEST_F(EnvPosixTest, random_access) {
 
         Slice read_slices[3] {slice1, slice2, slice3};
         st = rfile->readv_at(0, read_slices, 3);
-        ASSERT_TRUE(st.ok());
-        ASSERT_STREQ("123456789", std::string(slice1.data, slice1.size).c_str());
-        ASSERT_STREQ("abc", std::string(slice3.data, slice3.size).c_str());
+        EXPECT_TRUE(st.ok());
+        EXPECT_STREQ("123456789", std::string(slice1.data, slice1.size).c_str());
+        EXPECT_STREQ("abc", std::string(slice3.data, slice3.size).c_str());
 
         Slice slice4(mem, 3);
         st = rfile->read_at(112, &slice4);
-        ASSERT_TRUE(st.ok());
-        ASSERT_STREQ("bcd", std::string(slice4.data, slice4.size).c_str());
+        EXPECT_TRUE(st.ok());
+        EXPECT_STREQ("bcd", std::string(slice4.data, slice4.size).c_str());
 
         // end of file
         st = rfile->read_at(114, &slice4);
-        ASSERT_EQ(TStatusCode::END_OF_FILE, st.code());
+        EXPECT_EQ(TStatusCode::END_OF_FILE, st.code());
         LOG(INFO) << "st=" << st.to_string();
     }
 }
@@ -117,45 +117,45 @@ TEST_F(EnvPosixTest, random_rw) {
     std::unique_ptr<RandomRWFile> wfile;
     auto env = Env::Default();
     auto st = env->new_random_rw_file(fname, &wfile);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // write data
     Slice field1("123456789");
     st = wfile->write_at(0, field1);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     std::string buf;
     for (int i = 0; i < 100; ++i) {
         buf.push_back((char)i);
     }
     st = wfile->write_at(9, buf);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     Slice abc("abc");
     Slice bcd("bcd");
     Slice slices[2] {abc, bcd};
     st = wfile->writev_at(0, slices, 2);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     uint64_t size;
     st = wfile->size(&size);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(109, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(109, size);
 
     st = wfile->flush(RandomRWFile::FLUSH_ASYNC, 0, 0);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = wfile->sync();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = wfile->close();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     st = env->get_file_size(fname, &size);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(109, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(109, size);
     {
         char mem[1024];
         std::unique_ptr<RandomRWFile> rfile;
         RandomRWFileOptions opts;
         opts.mode = Env::MUST_EXIST;
         st = env->new_random_rw_file(opts, fname, &rfile);
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
 
         Slice slice1(mem, 3);
         Slice slice2(mem + 3, 3);
@@ -164,18 +164,18 @@ TEST_F(EnvPosixTest, random_rw) {
         Slice read_slices[3] {slice1, slice2, slice3};
         st = rfile->readv_at(0, read_slices, 3);
         LOG(INFO) << st.to_string();
-        ASSERT_TRUE(st.ok());
-        ASSERT_STREQ("abc", std::string(slice1.data, slice1.size).c_str());
-        ASSERT_STREQ("bcd", std::string(slice2.data, slice2.size).c_str());
-        ASSERT_STREQ("789", std::string(slice3.data, slice3.size).c_str());
+        EXPECT_TRUE(st.ok());
+        EXPECT_STREQ("abc", std::string(slice1.data, slice1.size).c_str());
+        EXPECT_STREQ("bcd", std::string(slice2.data, slice2.size).c_str());
+        EXPECT_STREQ("789", std::string(slice3.data, slice3.size).c_str());
 
         Slice slice4(mem, 100);
         st = rfile->read_at(9, slice4);
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
 
         // end of file
         st = rfile->read_at(102, slice4);
-        ASSERT_EQ(TStatusCode::END_OF_FILE, st.code());
+        EXPECT_EQ(TStatusCode::END_OF_FILE, st.code());
         LOG(INFO) << "st=" << st.to_string();
     }
     // SequentialFile
@@ -183,31 +183,31 @@ TEST_F(EnvPosixTest, random_rw) {
         char mem[1024];
         std::unique_ptr<SequentialFile> rfile;
         st = env->new_sequential_file(fname, &rfile);
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
 
         Slice slice1(mem, 3);
         st = rfile->read(&slice1);
-        ASSERT_TRUE(st.ok());
-        ASSERT_STREQ("abc", std::string(slice1.data, slice1.size).c_str());
+        EXPECT_TRUE(st.ok());
+        EXPECT_STREQ("abc", std::string(slice1.data, slice1.size).c_str());
 
         st = rfile->skip(3);
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
 
         Slice slice3(mem, 3);
         st = rfile->read(&slice3);
-        ASSERT_STREQ("789", std::string(slice3.data, slice3.size).c_str());
+        EXPECT_STREQ("789", std::string(slice3.data, slice3.size).c_str());
 
         st = rfile->skip(90);
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
 
         Slice slice4(mem, 15);
         st = rfile->read(&slice4);
-        ASSERT_TRUE(st.ok());
-        ASSERT_EQ(10, slice4.size);
+        EXPECT_TRUE(st.ok());
+        EXPECT_EQ(10, slice4.size);
 
         st = rfile->read(&slice4);
-        ASSERT_TRUE(st.ok());
-        ASSERT_EQ(0, slice4.size);
+        EXPECT_TRUE(st.ok());
+        EXPECT_EQ(0, slice4.size);
     }
 }
 
@@ -215,41 +215,36 @@ TEST_F(EnvPosixTest, iterate_dir) {
     std::string dir_path = "./ut_dir/env_posix/iterate_dir";
     FileUtils::remove_all(dir_path);
     auto st = Env::Default()->create_dir_if_missing(dir_path);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     st = Env::Default()->create_dir_if_missing(dir_path + "/abc");
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     st = Env::Default()->create_dir_if_missing(dir_path + "/123");
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     {
         std::vector<std::string> children;
         st = Env::Default()->get_children(dir_path, &children);
-        ASSERT_EQ(4, children.size());
+        EXPECT_EQ(4, children.size());
         std::sort(children.begin(), children.end());
 
-        ASSERT_STREQ(".", children[0].c_str());
-        ASSERT_STREQ("..", children[1].c_str());
-        ASSERT_STREQ("123", children[2].c_str());
-        ASSERT_STREQ("abc", children[3].c_str());
+        EXPECT_STREQ(".", children[0].c_str());
+        EXPECT_STREQ("..", children[1].c_str());
+        EXPECT_STREQ("123", children[2].c_str());
+        EXPECT_STREQ("abc", children[3].c_str());
     }
     {
         std::vector<std::string> children;
         st = FileUtils::list_files(Env::Default(), dir_path, &children);
-        ASSERT_EQ(2, children.size());
+        EXPECT_EQ(2, children.size());
         std::sort(children.begin(), children.end());
 
-        ASSERT_STREQ("123", children[0].c_str());
-        ASSERT_STREQ("abc", children[1].c_str());
+        EXPECT_STREQ("123", children[0].c_str());
+        EXPECT_STREQ("abc", children[1].c_str());
     }
 
     FileUtils::remove_all(dir_path);
 }
 
 } // namespace doris
-
-int main(int argc, char* argv[]) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/CMakeLists.txt b/be/test/exec/CMakeLists.txt
deleted file mode 100644
index 2c5f37d824..0000000000
--- a/be/test/exec/CMakeLists.txt
+++ /dev/null
@@ -1,76 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# where to put generated libraries
-set(LIBRARY_OUTPUT_PATH "${BUILD_DIR}/test/exec")
-
-# where to put generated binaries
-set(EXECUTABLE_OUTPUT_PATH "${BUILD_DIR}/test/exec")
-
-# TODO: why is this test disabled?
-#ADD_BE_TEST(new_olap_scan_node_test)
-#ADD_BE_TEST(pre_aggregation_node_test)
-ADD_BE_TEST(hash_table_test)
-# ADD_BE_TEST(partitioned_hash_table_test)
-#ADD_BE_TEST(olap_scanner_test)
-#ADD_BE_TEST(olap_meta_reader_test)
-ADD_BE_TEST(olap_common_test)
-#ADD_BE_TEST(olap_scan_node_test)
-#ADD_BE_TEST(mysql_scan_node_test)
-#ADD_BE_TEST(mysql_scanner_test)
-#ADD_BE_TEST(csv_scanner_test)
-#ADD_BE_TEST(csv_scan_node_test)
-# ADD_BE_TEST(csv_scan_bench_test)
-ADD_BE_TEST(json_scanner_test)
-ADD_BE_TEST(json_scanner_with_jsonpath_test)
-ADD_BE_TEST(parquet_scanner_test)
-ADD_BE_TEST(orc_scanner_test)
-ADD_BE_TEST(plain_text_line_reader_uncompressed_test)
-ADD_BE_TEST(plain_text_line_reader_gzip_test)
-ADD_BE_TEST(plain_text_line_reader_bzip_test)
-ADD_BE_TEST(plain_text_line_reader_lz4frame_test)
-if(DEFINED DORIS_WITH_LZO)
-ADD_BE_TEST(plain_text_line_reader_lzop_test)
-endif()
-# ADD_BE_TEST(broker_reader_test)
-ADD_BE_TEST(broker_scanner_test)
-ADD_BE_TEST(broker_scan_node_test)
-ADD_BE_TEST(tablet_info_test)
-ADD_BE_TEST(tablet_sink_test)
-ADD_BE_TEST(buffered_reader_test)
-# ADD_BE_TEST(es_scan_node_test)
-ADD_BE_TEST(es_http_scan_node_test)
-ADD_BE_TEST(es_predicate_test)
-ADD_BE_TEST(es_query_builder_test)
-ADD_BE_TEST(es_scan_reader_test)
-#ADD_BE_TEST(schema_scan_node_test)
-#ADD_BE_TEST(unix_odbc_test)
-#ADD_BE_TEST(schema_scanner_test)
-##ADD_BE_TEST(set_executor_test)
-#ADD_BE_TEST(schema_scanner/schema_authors_scanner_test)
-#ADD_BE_TEST(schema_scanner/schema_columns_scanner_test)
-#ADD_BE_TEST(schema_scanner/schema_create_table_scanner_test)
-#ADD_BE_TEST(schema_scanner/schema_open_tables_scanner_test)
-#ADD_BE_TEST(schema_scanner/schema_schemata_scanner_test)
-#ADD_BE_TEST(schema_scanner/schema_table_names_scanner_test)
-#ADD_BE_TEST(schema_scanner/schema_tables_scanner_test)
-#ADD_BE_TEST(schema_scanner/schema_variables_scanner_test)
-#ADD_BE_TEST(schema_scanner/schema_engines_scanner_test)
-#ADD_BE_TEST(schema_scanner/schema_collations_scanner_test)
-#ADD_BE_TEST(schema_scanner/schema_charsets_scanner_test)
-ADD_BE_TEST(s3_reader_test)
-ADD_BE_TEST(multi_bytes_separator_test)
diff --git a/be/test/exec/broker_reader_test.cpp b/be/test/exec/broker_reader_test.cpp
index 017073a69f..c9f19279e4 100644
--- a/be/test/exec/broker_reader_test.cpp
+++ b/be/test/exec/broker_reader_test.cpp
@@ -61,7 +61,7 @@ TEST_F(BrokerReaderTest, normal) {
     std::string path = "hdfs://host:port/dir";
     BrokerReader reader(_env, _addresses, _properties, path, 0);
     auto st = reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     uint8_t buf[128 * 1024];
     MonotonicStopWatch watch;
     watch.start();
@@ -70,22 +70,10 @@ TEST_F(BrokerReaderTest, normal) {
     while (!eof) {
         size_t buf_len = 128 * 1024;
         st = reader.read(buf, &buf_len, &eof);
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
         total_size += buf_len;
     }
     LOG(INFO) << "get from broker " << total_size << " bytes using " << watch.elapsed_time();
 }
 
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    // std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    // if (!doris::config::init(conffile.c_str(), false)) {
-    //     fprintf(stderr, "error read config file. \n");
-    //     return -1;
-    // }
-    // doris::init_glog("be-test");
-    doris::CpuInfo::init();
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/broker_scan_node_test.cpp b/be/test/exec/broker_scan_node_test.cpp
index 7f6d1d1a0f..328fd252ba 100644
--- a/be/test/exec/broker_scan_node_test.cpp
+++ b/be/test/exec/broker_scan_node_test.cpp
@@ -403,7 +403,7 @@ TEST_F(BrokerScanNodeTest, normal) {
     BrokerScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     scan_node.init(_tnode);
     auto status = scan_node.prepare(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     // set scan range
     std::vector<TScanRangeParams> scan_ranges;
@@ -421,7 +421,7 @@ TEST_F(BrokerScanNodeTest, normal) {
         range.file_type = TFileType::FILE_LOCAL;
         range.format_type = TFileFormatType::FORMAT_CSV_PLAIN;
         range.splittable = true;
-        std::vector<std::string> columns_from_path{"1"};
+        std::vector<std::string> columns_from_path {"1"};
         range.__set_columns_from_path(columns_from_path);
         range.__set_num_of_columns_from_file(3);
         broker_scan_range.ranges.push_back(range);
@@ -443,7 +443,7 @@ TEST_F(BrokerScanNodeTest, normal) {
         range.file_type = TFileType::FILE_LOCAL;
         range.format_type = TFileFormatType::FORMAT_CSV_PLAIN;
         range.splittable = true;
-        std::vector<std::string> columns_from_path{"2"};
+        std::vector<std::string> columns_from_path {"2"};
         range.__set_columns_from_path(columns_from_path);
         range.__set_num_of_columns_from_file(3);
         broker_scan_range.ranges.push_back(range);
@@ -456,7 +456,7 @@ TEST_F(BrokerScanNodeTest, normal) {
     scan_node.set_scan_ranges(scan_ranges);
 
     status = scan_node.open(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     auto tracker = std::make_shared<MemTracker>();
     // Get batch
@@ -464,18 +464,18 @@ TEST_F(BrokerScanNodeTest, normal) {
 
     bool eos = false;
     status = scan_node.get_next(&_runtime_state, &batch, &eos);
-    ASSERT_EQ(3, batch.num_rows());
-    ASSERT_FALSE(eos);
+    EXPECT_EQ(3, batch.num_rows());
+    EXPECT_FALSE(eos);
 
     batch.reset();
     status = scan_node.get_next(&_runtime_state, &batch, &eos);
-    ASSERT_EQ(1, batch.num_rows());
-    ASSERT_FALSE(eos);
+    EXPECT_EQ(1, batch.num_rows());
+    EXPECT_FALSE(eos);
 
     batch.reset();
     status = scan_node.get_next(&_runtime_state, &batch, &eos);
-    ASSERT_EQ(0, batch.num_rows());
-    ASSERT_TRUE(eos);
+    EXPECT_EQ(0, batch.num_rows());
+    EXPECT_TRUE(eos);
 
     scan_node.close(&_runtime_state);
     {
@@ -486,14 +486,3 @@ TEST_F(BrokerScanNodeTest, normal) {
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    // std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    // if (!doris::config::init(conffile.c_str(), false)) {
-    //     fprintf(stderr, "error read config file. \n");
-    //     return -1;
-    // }
-    // init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/broker_scanner_test.cpp b/be/test/exec/broker_scanner_test.cpp
index 6bbb42740e..689e876754 100644
--- a/be/test/exec/broker_scanner_test.cpp
+++ b/be/test/exec/broker_scanner_test.cpp
@@ -68,7 +68,7 @@ private:
     DescriptorTbl* _desc_tbl;
     std::vector<TNetworkAddress> _addresses;
     ScannerCounter _counter;
-    std::vector<TExpr> _pre_filter; 
+    std::vector<TExpr> _pre_filter;
 };
 
 void BrokerScannerTest::init_desc_table() {
@@ -358,9 +358,10 @@ TEST_F(BrokerScannerTest, normal) {
     range.format_type = TFileFormatType::FORMAT_CSV_PLAIN;
     ranges.push_back(range);
 
-    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter, &_counter);
+    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter,
+                          &_counter);
     auto st = scanner.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     MemPool tuple_pool(_tracker.get());
     Tuple* tuple = (Tuple*)tuple_pool.allocate(20);
@@ -368,37 +369,37 @@ TEST_F(BrokerScannerTest, normal) {
     bool eof = false;
     // 1,2,3
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(1, *(int*)tuple->get_slot(0));
-    ASSERT_EQ(2, *(int*)tuple->get_slot(4));
-    ASSERT_EQ(3, *(int*)tuple->get_slot(8));
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(1, *(int*)tuple->get_slot(0));
+    EXPECT_EQ(2, *(int*)tuple->get_slot(4));
+    EXPECT_EQ(3, *(int*)tuple->get_slot(8));
 
     // 4,5,6
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(4, *(int*)tuple->get_slot(0));
-    ASSERT_EQ(5, *(int*)tuple->get_slot(4));
-    ASSERT_EQ(6, *(int*)tuple->get_slot(8));
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(4, *(int*)tuple->get_slot(0));
+    EXPECT_EQ(5, *(int*)tuple->get_slot(4));
+    EXPECT_EQ(6, *(int*)tuple->get_slot(8));
 
     // 7, 8, unqualitifed
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_FALSE(fill_tuple);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_FALSE(fill_tuple);
 
     // 8,9,10
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(8, *(int*)tuple->get_slot(0));
-    ASSERT_EQ(9, *(int*)tuple->get_slot(4));
-    ASSERT_EQ(10, *(int*)tuple->get_slot(8));
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(8, *(int*)tuple->get_slot(0));
+    EXPECT_EQ(9, *(int*)tuple->get_slot(4));
+    EXPECT_EQ(10, *(int*)tuple->get_slot(8));
     // end of file
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
 TEST_F(BrokerScannerTest, normal2) {
@@ -418,9 +419,10 @@ TEST_F(BrokerScannerTest, normal2) {
     range.size = 4;
     ranges.push_back(range);
 
-    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter, &_counter);
+    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter,
+                          &_counter);
     auto st = scanner.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     MemPool tuple_pool(_tracker.get());
     Tuple* tuple = (Tuple*)tuple_pool.allocate(20);
@@ -428,31 +430,31 @@ TEST_F(BrokerScannerTest, normal2) {
     bool eof = false;
     // 1,2,3
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(1, *(int*)tuple->get_slot(0));
-    ASSERT_EQ(2, *(int*)tuple->get_slot(4));
-    ASSERT_EQ(3, *(int*)tuple->get_slot(8));
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(1, *(int*)tuple->get_slot(0));
+    EXPECT_EQ(2, *(int*)tuple->get_slot(4));
+    EXPECT_EQ(3, *(int*)tuple->get_slot(8));
 
     // 3,4,5
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_TRUE(fill_tuple);
-    ASSERT_EQ(3, *(int*)tuple->get_slot(0));
-    ASSERT_EQ(4, *(int*)tuple->get_slot(4));
-    ASSERT_EQ(5, *(int*)tuple->get_slot(8));
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_TRUE(fill_tuple);
+    EXPECT_EQ(3, *(int*)tuple->get_slot(0));
+    EXPECT_EQ(4, *(int*)tuple->get_slot(4));
+    EXPECT_EQ(5, *(int*)tuple->get_slot(8));
 
     // end of file
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(fill_tuple);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(fill_tuple);
+    EXPECT_FALSE(eof);
 
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(fill_tuple);
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(fill_tuple);
+    EXPECT_TRUE(eof);
 }
 
 TEST_F(BrokerScannerTest, normal3) {
@@ -472,9 +474,10 @@ TEST_F(BrokerScannerTest, normal3) {
     range.size = 5;
     ranges.push_back(range);
 
-    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter, &_counter);
+    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter,
+                          &_counter);
     auto st = scanner.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     MemPool tuple_pool(_tracker.get());
     Tuple* tuple = (Tuple*)tuple_pool.allocate(20);
@@ -482,39 +485,39 @@ TEST_F(BrokerScannerTest, normal3) {
     bool eof = false;
     // 1,2,3
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(1, *(int*)tuple->get_slot(0));
-    ASSERT_EQ(2, *(int*)tuple->get_slot(4));
-    ASSERT_EQ(3, *(int*)tuple->get_slot(8));
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(1, *(int*)tuple->get_slot(0));
+    EXPECT_EQ(2, *(int*)tuple->get_slot(4));
+    EXPECT_EQ(3, *(int*)tuple->get_slot(8));
 
     // 3,4,5
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_TRUE(fill_tuple);
-    ASSERT_EQ(3, *(int*)tuple->get_slot(0));
-    ASSERT_EQ(4, *(int*)tuple->get_slot(4));
-    ASSERT_EQ(5, *(int*)tuple->get_slot(8));
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_TRUE(fill_tuple);
+    EXPECT_EQ(3, *(int*)tuple->get_slot(0));
+    EXPECT_EQ(4, *(int*)tuple->get_slot(4));
+    EXPECT_EQ(5, *(int*)tuple->get_slot(8));
 
     // first line of normal2_2.csv is 2,3, which is unqualified
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_FALSE(fill_tuple);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_FALSE(fill_tuple);
 
     // 4,5,6
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(4, *(int*)tuple->get_slot(0));
-    ASSERT_EQ(5, *(int*)tuple->get_slot(4));
-    ASSERT_EQ(6, *(int*)tuple->get_slot(8));
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(4, *(int*)tuple->get_slot(0));
+    EXPECT_EQ(5, *(int*)tuple->get_slot(4));
+    EXPECT_EQ(6, *(int*)tuple->get_slot(8));
 
     // end of file
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
 TEST_F(BrokerScannerTest, normal4) {
@@ -528,9 +531,10 @@ TEST_F(BrokerScannerTest, normal4) {
     range.format_type = TFileFormatType::FORMAT_CSV_PLAIN;
     ranges.push_back(range);
 
-    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter, &_counter);
+    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter,
+                          &_counter);
     auto st = scanner.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     MemPool tuple_pool(_tracker.get());
     Tuple* tuple = (Tuple*)tuple_pool.allocate(20);
@@ -538,15 +542,15 @@ TEST_F(BrokerScannerTest, normal4) {
     bool eof = false;
     // 1,2,3
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(1, *(int*)tuple->get_slot(0));
-    ASSERT_EQ(2, *(int*)tuple->get_slot(4));
-    ASSERT_EQ(3, *(int*)tuple->get_slot(8));
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(1, *(int*)tuple->get_slot(0));
+    EXPECT_EQ(2, *(int*)tuple->get_slot(4));
+    EXPECT_EQ(3, *(int*)tuple->get_slot(8));
     // end of file
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
 TEST_F(BrokerScannerTest, normal5) {
@@ -560,9 +564,10 @@ TEST_F(BrokerScannerTest, normal5) {
     range.format_type = TFileFormatType::FORMAT_CSV_PLAIN;
     ranges.push_back(range);
 
-    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter, &_counter);
+    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter,
+                          &_counter);
     auto st = scanner.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     MemPool tuple_pool(_tracker.get());
     Tuple* tuple = (Tuple*)tuple_pool.allocate(20);
@@ -570,8 +575,8 @@ TEST_F(BrokerScannerTest, normal5) {
     bool eof = false;
     // end of file
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
 TEST_F(BrokerScannerTest, normal6) {
@@ -585,9 +590,10 @@ TEST_F(BrokerScannerTest, normal6) {
     range.format_type = TFileFormatType::FORMAT_CSV_PLAIN;
     ranges.push_back(range);
 
-    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter, &_counter);
+    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter,
+                          &_counter);
     auto st = scanner.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     MemPool tuple_pool(_tracker.get());
     Tuple* tuple = (Tuple*)tuple_pool.allocate(20);
@@ -595,15 +601,15 @@ TEST_F(BrokerScannerTest, normal6) {
     bool eof = false;
     // 4,5,6
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(4, *(int*)tuple->get_slot(0));
-    ASSERT_EQ(5, *(int*)tuple->get_slot(4));
-    ASSERT_EQ(6, *(int*)tuple->get_slot(8));
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(4, *(int*)tuple->get_slot(0));
+    EXPECT_EQ(5, *(int*)tuple->get_slot(4));
+    EXPECT_EQ(6, *(int*)tuple->get_slot(8));
     // end of file
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
 TEST_F(BrokerScannerTest, normal7) {
@@ -617,9 +623,10 @@ TEST_F(BrokerScannerTest, normal7) {
     range.format_type = TFileFormatType::FORMAT_CSV_PLAIN;
     ranges.push_back(range);
 
-    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter, &_counter);
+    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter,
+                          &_counter);
     auto st = scanner.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     MemPool tuple_pool(_tracker.get());
     Tuple* tuple = (Tuple*)tuple_pool.allocate(20);
@@ -627,8 +634,8 @@ TEST_F(BrokerScannerTest, normal7) {
     bool eof = false;
     // end of file
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
 TEST_F(BrokerScannerTest, normal8) {
@@ -642,9 +649,10 @@ TEST_F(BrokerScannerTest, normal8) {
     range.format_type = TFileFormatType::FORMAT_CSV_PLAIN;
     ranges.push_back(range);
 
-    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter, &_counter);
+    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter,
+                          &_counter);
     auto st = scanner.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     MemPool tuple_pool(_tracker.get());
     Tuple* tuple = (Tuple*)tuple_pool.allocate(20);
@@ -652,15 +660,15 @@ TEST_F(BrokerScannerTest, normal8) {
     bool eof = false;
     // 4,5,6
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(4, *(int*)tuple->get_slot(0));
-    ASSERT_EQ(5, *(int*)tuple->get_slot(4));
-    ASSERT_EQ(6, *(int*)tuple->get_slot(8));
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(4, *(int*)tuple->get_slot(0));
+    EXPECT_EQ(5, *(int*)tuple->get_slot(4));
+    EXPECT_EQ(6, *(int*)tuple->get_slot(8));
     // end of file
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
 TEST_F(BrokerScannerTest, normal9) {
@@ -674,9 +682,10 @@ TEST_F(BrokerScannerTest, normal9) {
     range.format_type = TFileFormatType::FORMAT_CSV_PLAIN;
     ranges.push_back(range);
 
-    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter, &_counter);
+    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter,
+                          &_counter);
     auto st = scanner.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     MemPool tuple_pool(_tracker.get());
     Tuple* tuple = (Tuple*)tuple_pool.allocate(20);
@@ -684,8 +693,8 @@ TEST_F(BrokerScannerTest, normal9) {
     bool eof = false;
     // end of file
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
 TEST_F(BrokerScannerTest, multi_bytes_1) {
@@ -703,9 +712,10 @@ TEST_F(BrokerScannerTest, multi_bytes_1) {
     _params.line_delimiter_str = "BB";
     _params.column_separator_length = 4;
     _params.line_delimiter_length = 2;
-    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter, &_counter);
+    BrokerScanner scanner(&_runtime_state, _profile, _params, ranges, _addresses, _pre_filter,
+                          &_counter);
     auto st = scanner.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     MemPool tuple_pool(_tracker.get());
     Tuple* tuple = (Tuple*)tuple_pool.allocate(20);
@@ -713,33 +723,22 @@ TEST_F(BrokerScannerTest, multi_bytes_1) {
     bool eof = false;
     // 4,5,6
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(4, *(int*)tuple->get_slot(0));
-    ASSERT_EQ(5, *(int*)tuple->get_slot(4));
-    ASSERT_EQ(6, *(int*)tuple->get_slot(8));
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(4, *(int*)tuple->get_slot(0));
+    EXPECT_EQ(5, *(int*)tuple->get_slot(4));
+    EXPECT_EQ(6, *(int*)tuple->get_slot(8));
     // 1,2,3
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(1, *(int*)tuple->get_slot(0));
-    ASSERT_EQ(2, *(int*)tuple->get_slot(4));
-    ASSERT_EQ(3, *(int*)tuple->get_slot(8));
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(1, *(int*)tuple->get_slot(0));
+    EXPECT_EQ(2, *(int*)tuple->get_slot(4));
+    EXPECT_EQ(3, *(int*)tuple->get_slot(8));
     // end of file
     st = scanner.get_next(tuple, &tuple_pool, &eof, &fill_tuple);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    // std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    // if (!doris::config::init(conffile.c_str(), false)) {
-    //     fprintf(stderr, "error read config file. \n");
-    //     return -1;
-    // }
-    // doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/buffered_reader_test.cpp b/be/test/exec/buffered_reader_test.cpp
index b984d9c5d5..7fe6c47fee 100644
--- a/be/test/exec/buffered_reader_test.cpp
+++ b/be/test/exec/buffered_reader_test.cpp
@@ -39,14 +39,14 @@ TEST_F(BufferedReaderTest, normal_use) {
             "./be/test/exec/test_data/buffered_reader/buffered_reader_test_file", 0);
     BufferedReader reader(&profile, file_reader, 1024);
     auto st = reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     uint8_t buf[1024];
     MonotonicStopWatch watch;
     watch.start();
     int64_t read_length = 0;
     st = reader.readat(0, 1024, &read_length, buf);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(950, read_length);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(950, read_length);
     LOG(INFO) << "read bytes " << read_length << " using time " << watch.elapsed_time();
 }
 
@@ -57,40 +57,40 @@ TEST_F(BufferedReaderTest, test_validity) {
             "./be/test/exec/test_data/buffered_reader/buffered_reader_test_file.txt", 0);
     BufferedReader reader(&profile, file_reader, 64);
     auto st = reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     uint8_t buf[10];
     bool eof = false;
     int64_t buf_len = 10;
     int64_t read_length = 0;
 
     st = reader.read(buf, buf_len, &read_length, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_STREQ("bdfhjlnprt", std::string((char*)buf, read_length).c_str());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_STREQ("bdfhjlnprt", std::string((char*)buf, read_length).c_str());
+    EXPECT_FALSE(eof);
 
     st = reader.read(buf, buf_len, &read_length, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_STREQ("vxzAbCdEfG", std::string((char*)buf, read_length).c_str());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_STREQ("vxzAbCdEfG", std::string((char*)buf, read_length).c_str());
+    EXPECT_FALSE(eof);
 
     st = reader.read(buf, buf_len, &read_length, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_STREQ("hIj\n\nMnOpQ", std::string((char*)buf, read_length).c_str());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_STREQ("hIj\n\nMnOpQ", std::string((char*)buf, read_length).c_str());
+    EXPECT_FALSE(eof);
 
     st = reader.read(buf, buf_len, &read_length, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_STREQ("rStUvWxYz\n", std::string((char*)buf, read_length).c_str());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_STREQ("rStUvWxYz\n", std::string((char*)buf, read_length).c_str());
+    EXPECT_FALSE(eof);
 
     st = reader.read(buf, buf_len, &read_length, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_STREQ("IjKl", std::string((char*)buf, 4).c_str());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_STREQ("IjKl", std::string((char*)buf, 4).c_str());
+    EXPECT_FALSE(eof);
 
     st = reader.read(buf, buf_len, &read_length, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
 TEST_F(BufferedReaderTest, test_seek) {
@@ -100,7 +100,7 @@ TEST_F(BufferedReaderTest, test_seek) {
             "./be/test/exec/test_data/buffered_reader/buffered_reader_test_file.txt", 0);
     BufferedReader reader(&profile, file_reader, 64);
     auto st = reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     uint8_t buf[10];
     bool eof = false;
     size_t buf_len = 10;
@@ -108,41 +108,41 @@ TEST_F(BufferedReaderTest, test_seek) {
 
     // Seek to the end of the file
     st = reader.seek(45);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = reader.read(buf, buf_len, &read_length, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 
     // Seek to the beginning of the file
     st = reader.seek(0);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = reader.read(buf, buf_len, &read_length, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_STREQ("bdfhjlnprt", std::string((char*)buf, read_length).c_str());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_STREQ("bdfhjlnprt", std::string((char*)buf, read_length).c_str());
+    EXPECT_FALSE(eof);
 
     // Seek to a wrong position
     st = reader.seek(-1);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = reader.read(buf, buf_len, &read_length, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_STREQ("bdfhjlnprt", std::string((char*)buf, read_length).c_str());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_STREQ("bdfhjlnprt", std::string((char*)buf, read_length).c_str());
+    EXPECT_FALSE(eof);
 
     // Seek to a wrong position
     st = reader.seek(-1000);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = reader.read(buf, buf_len, &read_length, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_STREQ("bdfhjlnprt", std::string((char*)buf, read_length).c_str());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_STREQ("bdfhjlnprt", std::string((char*)buf, read_length).c_str());
+    EXPECT_FALSE(eof);
 
     // Seek to a wrong position
     st = reader.seek(1000);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = reader.read(buf, buf_len, &read_length, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
 TEST_F(BufferedReaderTest, test_miss) {
@@ -152,36 +152,31 @@ TEST_F(BufferedReaderTest, test_miss) {
             "./be/test/exec/test_data/buffered_reader/buffered_reader_test_file.txt", 0);
     BufferedReader reader(&profile, file_reader, 64);
     auto st = reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     uint8_t buf[128];
     int64_t bytes_read;
 
     st = reader.readat(20, 10, &bytes_read, buf);
-    ASSERT_TRUE(st.ok());
-    ASSERT_STREQ("hIj\n\nMnOpQ", std::string((char*)buf, (size_t)bytes_read).c_str());
-    ASSERT_EQ(10, bytes_read);
+    EXPECT_TRUE(st.ok());
+    EXPECT_STREQ("hIj\n\nMnOpQ", std::string((char*)buf, (size_t)bytes_read).c_str());
+    EXPECT_EQ(10, bytes_read);
 
     st = reader.readat(0, 5, &bytes_read, buf);
-    ASSERT_TRUE(st.ok());
-    ASSERT_STREQ("bdfhj", std::string((char*)buf, (size_t)bytes_read).c_str());
-    ASSERT_EQ(5, bytes_read);
+    EXPECT_TRUE(st.ok());
+    EXPECT_STREQ("bdfhj", std::string((char*)buf, (size_t)bytes_read).c_str());
+    EXPECT_EQ(5, bytes_read);
 
     st = reader.readat(5, 10, &bytes_read, buf);
-    ASSERT_TRUE(st.ok());
-    ASSERT_STREQ("lnprtvxzAb", std::string((char*)buf, (size_t)bytes_read).c_str());
-    ASSERT_EQ(10, bytes_read);
+    EXPECT_TRUE(st.ok());
+    EXPECT_STREQ("lnprtvxzAb", std::string((char*)buf, (size_t)bytes_read).c_str());
+    EXPECT_EQ(10, bytes_read);
 
     // if requested length is larger than the capacity of buffer, do not
     // need to copy the character into local buffer.
     st = reader.readat(0, 128, &bytes_read, buf);
-    ASSERT_TRUE(st.ok());
-    ASSERT_STREQ("bdfhjlnprt", std::string((char*)buf, 10).c_str());
-    ASSERT_EQ(45, bytes_read);
+    EXPECT_TRUE(st.ok());
+    EXPECT_STREQ("bdfhjlnprt", std::string((char*)buf, 10).c_str());
+    EXPECT_EQ(45, bytes_read);
 }
 
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/csv_scan_bench_test.cpp b/be/test/exec/csv_scan_bench_test.cpp
index 2756ab36d9..d7c6e2200d 100644
--- a/be/test/exec/csv_scan_bench_test.cpp
+++ b/be/test/exec/csv_scan_bench_test.cpp
@@ -297,10 +297,10 @@ void CsvScanNodeBenchTest::init_desc_tbl() {
 TEST_F(CsvScanNodeBenchTest, NormalUse) {
     CsvScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     status = scan_node.open(_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     bool eos = false;
 
@@ -308,37 +308,19 @@ TEST_F(CsvScanNodeBenchTest, NormalUse) {
         // RowBatch row_batch(scan_node._row_descriptor, _state->batch_size());
         RowBatch row_batch(scan_node._row_descriptor, 1024);
         status = scan_node.get_next(_state, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         // int num = std::min(row_batch.num_rows(), 10);
         int num = row_batch.num_rows();
-        // ASSERT_TRUE(num > 0);
-        // std::cout << "num: " << num << std::endl;
+        // EXPECT_TRUE(num > 0);
     }
 
-    ASSERT_TRUE(scan_node.close(_state).ok());
+    EXPECT_TRUE(scan_node.close(_state).ok());
 
     {
         std::stringstream ss;
         scan_node.runtime_profile()->pretty_print(&ss);
         LOG(WARNING) << ss.str();
-        std::cout << ss.str() << std::endl;
     }
 }
 
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    ProfilerStart("profile_scan_bench");
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    // if (!doris::config::init(conffile.c_str(), false)) {
-    //     fprintf(stderr, "error read config file. \n");
-    //     return -1;
-    // }
-    doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-
-    RUN_ALL_TESTS();
-
-    ProfilerStop();
-    return 0;
-}
diff --git a/be/test/exec/csv_scan_node_test.cpp b/be/test/exec/csv_scan_node_test.cpp
index b2feef0d65..b52b2f84cf 100644
--- a/be/test/exec/csv_scan_node_test.cpp
+++ b/be/test/exec/csv_scan_node_test.cpp
@@ -244,10 +244,10 @@ TEST_F(CsvScanNodeTest, NormalUse) {
 
     CsvScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     status = scan_node.open(_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     auto tracker = std::make_shared<MemTracker>();
     RowBatch row_batch(scan_node._row_descriptor, _state->batch_size(), tracker.get());
@@ -255,25 +255,21 @@ TEST_F(CsvScanNodeTest, NormalUse) {
 
     while (!eos) {
         status = scan_node.get_next(_state, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         // int num = std::min(row_batch.num_rows(), 10);
         int num = row_batch.num_rows();
-        std::cout << "num: " << num << std::endl;
-        ASSERT_EQ(num, 6);
+        EXPECT_EQ(num, 6);
 
         for (int i = 0; i < num; ++i) {
             TupleRow* row = row_batch.get_row(i);
-            // LOG(WARNING) << "input row[" << i << "]: " << print_row(row, scan_node._row_descriptor);
-            std::cout << "input row: " << print_row(row, scan_node._row_descriptor) << std::endl;
-
             if (i == 0) {
-                ASSERT_EQ(std::string("[(1 -12345.67891 2015-04-20 abc\0\0)]", 35),
+                EXPECT_EQ(std::string("[(1 -12345.67891 2015-04-20 abc\0\0)]", 35),
                           print_row(row, scan_node._row_descriptor));
             }
         }
     }
 
-    ASSERT_TRUE(scan_node.close(_state).ok());
+    EXPECT_TRUE(scan_node.close(_state).ok());
 }
 
 TEST_F(CsvScanNodeTest, continuousDelim) {
@@ -283,35 +279,31 @@ TEST_F(CsvScanNodeTest, continuousDelim) {
 
     CsvScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     status = scan_node.open(_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     RowBatch row_batch(scan_node._row_descriptor, _state->batch_size(), tracker.get());
     bool eos = false;
 
     while (!eos) {
         status = scan_node.get_next(_state, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         // int num = std::min(row_batch.num_rows(), 10);
         int num = row_batch.num_rows();
-        std::cout << "num: " << num << std::endl;
-        ASSERT_EQ(num, 1);
+        EXPECT_EQ(num, 1);
 
         for (int i = 0; i < num; ++i) {
             TupleRow* row = row_batch.get_row(i);
-            // LOG(WARNING) << "input row[" << i << "]: " << print_row(row, scan_node._row_descriptor);
-            std::cout << "input row: " << print_row(row, scan_node._row_descriptor) << std::endl;
-
             if (i == 0) {
-                ASSERT_EQ(std::string("[(1 -12345.67891 2015-04-20 \0\0\0\0\0)]", 35),
+                EXPECT_EQ(std::string("[(1 -12345.67891 2015-04-20 \0\0\0\0\0)]", 35),
                           print_row(row, scan_node._row_descriptor));
             }
         }
     }
 
-    ASSERT_TRUE(scan_node.close(_state).ok());
+    EXPECT_TRUE(scan_node.close(_state).ok());
 }
 
 TEST_F(CsvScanNodeTest, wrong_decimal_format_test) {
@@ -321,10 +313,10 @@ TEST_F(CsvScanNodeTest, wrong_decimal_format_test) {
 
     CsvScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     status = scan_node.open(_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     auto tracker = std::make_shared<MemTracker>();
     RowBatch row_batch(scan_node._row_descriptor, _state->batch_size(), tracker.get());
@@ -332,15 +324,14 @@ TEST_F(CsvScanNodeTest, wrong_decimal_format_test) {
 
     while (!eos) {
         status = scan_node.get_next(_state, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         // int num = std::min(row_batch.num_rows(), 10);
         int num = row_batch.num_rows();
-        std::cout << "num: " << num << std::endl;
-        ASSERT_EQ(0, num);
+        EXPECT_EQ(0, num);
     }
 
     // Failed because reach max_filter_ratio
-    ASSERT_TRUE(!scan_node.close(_state).ok());
+    EXPECT_TRUE(!scan_node.close(_state).ok());
 }
 
 TEST_F(CsvScanNodeTest, fill_fix_len_stringi_test) {
@@ -350,10 +341,10 @@ TEST_F(CsvScanNodeTest, fill_fix_len_stringi_test) {
 
     CsvScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     status = scan_node.open(_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     auto tracker = std::make_shared<MemTracker>();
     RowBatch row_batch(scan_node._row_descriptor, _state->batch_size(), tracker.get());
@@ -361,31 +352,28 @@ TEST_F(CsvScanNodeTest, fill_fix_len_stringi_test) {
 
     while (!eos) {
         status = scan_node.get_next(_state, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         // int num = std::min(row_batch.num_rows(), 10);
         int num = row_batch.num_rows();
-        std::cout << "num: " << num << std::endl;
-        ASSERT_TRUE(num > 0);
+        EXPECT_TRUE(num > 0);
 
         // 1,2015-04-20,12345.67891,abcdefg
         for (int i = 0; i < num; ++i) {
             TupleRow* row = row_batch.get_row(i);
             LOG(WARNING) << "input row[" << i << "]: " << print_row(row, scan_node._row_descriptor);
-            std::cout << "input row: " << print_row(row, scan_node._row_descriptor) << std::endl;
 
             if (i == 0) {
-                ASSERT_EQ(std::string("[(1 12345.67891 2015-04-20 ab\0\0\0)]", 34),
+                EXPECT_EQ(std::string("[(1 12345.67891 2015-04-20 ab\0\0\0)]", 34),
                           print_row(row, scan_node._row_descriptor));
                 Tuple* tuple = row->get_tuple(0);
                 StringValue* str_slot =
                         tuple->get_string_slot(_t_desc_table.slotDescriptors[3].byteOffset);
-                std::cout << "str_slot len: " << str_slot->len << std::endl;
-                ASSERT_EQ(5, str_slot->len);
+                EXPECT_EQ(5, str_slot->len);
             }
         }
     }
 
-    ASSERT_TRUE(scan_node.close(_state).ok());
+    EXPECT_TRUE(scan_node.close(_state).ok());
 }
 
 TEST_F(CsvScanNodeTest, wrong_fix_len_string_format_test) {
@@ -395,10 +383,10 @@ TEST_F(CsvScanNodeTest, wrong_fix_len_string_format_test) {
 
     CsvScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     status = scan_node.open(_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     auto tracker = std::make_shared<MemTracker>();
     RowBatch row_batch(scan_node._row_descriptor, _state->batch_size(), tracker.get());
@@ -406,15 +394,14 @@ TEST_F(CsvScanNodeTest, wrong_fix_len_string_format_test) {
 
     while (!eos) {
         status = scan_node.get_next(_state, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         // int num = std::min(row_batch.num_rows(), 10);
         int num = row_batch.num_rows();
-        std::cout << "num: " << num << std::endl;
-        ASSERT_EQ(0, num);
+        EXPECT_EQ(0, num);
     }
 
     // Failed because reach max_filter_ratio
-    ASSERT_TRUE(!scan_node.close(_state).ok());
+    EXPECT_TRUE(!scan_node.close(_state).ok());
 }
 
 // To be added test case
@@ -424,21 +411,3 @@ TEST_F(CsvScanNodeTest, wrong_fix_len_string_format_test) {
 // 4. max_filter_ratio
 
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    // std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    // if (!doris::config::init(conffile.c_str(), false)) {
-    //     fprintf(stderr, "error read config file. \n");
-    //     return -1;
-    // }
-    doris::config::read_size = 8388608;
-    doris::config::min_buffer_size = 1024;
-
-    doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-
-    doris::CpuInfo::init();
-    doris::DiskInfo::init();
-
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/csv_scanner_test.cpp b/be/test/exec/csv_scanner_test.cpp
index fa20d538b1..846618518a 100644
--- a/be/test/exec/csv_scanner_test.cpp
+++ b/be/test/exec/csv_scanner_test.cpp
@@ -51,12 +51,12 @@ void CsvScannerTest::init() {
 TEST_F(CsvScannerTest, normal_use) {
     CsvScanner scanner(_file_paths);
     Status status = scanner.open();
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     std::string line_str;
     bool eos = false;
     status = scanner.get_next_row(&line_str, &eos);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     while (!eos) {
         status = scanner.get_next_row(&line_str, &eos);
@@ -64,7 +64,7 @@ TEST_F(CsvScannerTest, normal_use) {
         if (eos) {
             break;
         }
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
 
         LOG(WARNING) << line_str;
     }
@@ -78,23 +78,12 @@ TEST_F(CsvScannerTest, no_exist_files) {
     CsvScanner scanner(no_exist_files);
     Status status = scanner.open();
     // check until 'get_next_row()'
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     std::string line_str;
     bool eos = false;
     status = scanner.get_next_row(&line_str, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    // std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    // if (!doris::config::init(conffile.c_str(), false)) {
-    //     fprintf(stderr, "error read config file. \n");
-    //     return -1;
-    // }
-    doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/es_http_scan_node_test.cpp b/be/test/exec/es_http_scan_node_test.cpp
index 17b2d4c983..fdcbb89426 100644
--- a/be/test/exec/es_http_scan_node_test.cpp
+++ b/be/test/exec/es_http_scan_node_test.cpp
@@ -107,10 +107,10 @@ protected:
 TEST_F(EsHttpScanNodeTest, normal_use) {
     EsHttpScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.init(_tnode, &_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     status = scan_node.prepare(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     // scan range
     TEsScanRange es_scan_range;
@@ -131,18 +131,13 @@ TEST_F(EsHttpScanNodeTest, normal_use) {
     scan_ranges.push_back(scan_range_params);
 
     status = scan_node.set_scan_ranges(scan_ranges);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     status = scan_node.open(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     status = scan_node.close(&_runtime_state);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/es_predicate_test.cpp b/be/test/exec/es_predicate_test.cpp
index 28ce54877d..966b0c0eff 100644
--- a/be/test/exec/es_predicate_test.cpp
+++ b/be/test/exec/es_predicate_test.cpp
@@ -142,7 +142,7 @@ Status EsPredicateTest::build_expr_context_list(std::vector<ExprContext*>& conju
 TEST_F(EsPredicateTest, normal) {
     std::vector<ExprContext*> conjunct_ctxs;
     Status status = build_expr_context_list(conjunct_ctxs);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     TupleDescriptor* tuple_desc = _desc_tbl->get_tuple_descriptor(0);
     std::vector<EsPredicate*> predicates;
     for (int i = 0; i < conjunct_ctxs.size(); ++i) {
@@ -164,15 +164,10 @@ TEST_F(EsPredicateTest, normal) {
             "{\"bool\":{\"filter\":[{\"bool\":{\"should\":[{\"range\":{\"id\":{\"gt\":\"10\"}}}]}}]"
             "}}";
     LOG(INFO) << "compound bool query" << actual_bool_json;
-    ASSERT_STREQ(expected_json.c_str(), actual_bool_json.c_str());
+    EXPECT_STREQ(expected_json.c_str(), actual_bool_json.c_str());
     for (auto predicate : predicates) {
         delete predicate;
     }
 }
 
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/es_query_builder_test.cpp b/be/test/exec/es_query_builder_test.cpp
index a9b04b72a7..6b8a172dcb 100644
--- a/be/test/exec/es_query_builder_test.cpp
+++ b/be/test/exec/es_query_builder_test.cpp
@@ -58,7 +58,7 @@ TEST_F(BooleanQueryBuilderTest, term_query) {
     term_value.Accept(writer);
     std::string actual_json = buffer.GetString();
     //LOG(INFO) << "term query" << actual_json;
-    ASSERT_STREQ("{\"term\":{\"content\":\"wyf\"}}", actual_json.c_str());
+    EXPECT_STREQ("{\"term\":{\"content\":\"wyf\"}}", actual_json.c_str());
 }
 
 TEST_F(BooleanQueryBuilderTest, range_query) {
@@ -80,7 +80,7 @@ TEST_F(BooleanQueryBuilderTest, range_query) {
     range_value.Accept(writer);
     std::string actual_json = buffer.GetString();
     //LOG(INFO) << "range query" << actual_json;
-    ASSERT_STREQ("{\"range\":{\"k\":{\"gte\":\"a\"}}}", actual_json.c_str());
+    EXPECT_STREQ("{\"range\":{\"k\":{\"gte\":\"a\"}}}", actual_json.c_str());
 }
 
 TEST_F(BooleanQueryBuilderTest, es_query) {
@@ -106,7 +106,7 @@ TEST_F(BooleanQueryBuilderTest, es_query) {
     es_query_value.Accept(writer);
     std::string actual_json = buffer.GetString();
     //LOG(INFO) << "es query" << actual_json;
-    ASSERT_STREQ("{\"bool\":{\"must_not\":{\"exists\":{\"field\":\"f1\"}}}}", actual_json.c_str());
+    EXPECT_STREQ("{\"bool\":{\"must_not\":{\"exists\":{\"field\":\"f1\"}}}}", actual_json.c_str());
 }
 
 TEST_F(BooleanQueryBuilderTest, like_query) {
@@ -129,7 +129,7 @@ TEST_F(BooleanQueryBuilderTest, like_query) {
     like_query_value.Accept(writer);
     std::string actual_json = buffer.GetString();
     // LOG(INFO) << "wildcard query" << actual_json;
-    ASSERT_STREQ("{\"wildcard\":{\"content\":\"a*e*g?\"}}", actual_json.c_str());
+    EXPECT_STREQ("{\"wildcard\":{\"content\":\"a*e*g?\"}}", actual_json.c_str());
 }
 
 TEST_F(BooleanQueryBuilderTest, terms_in_query) {
@@ -167,7 +167,7 @@ TEST_F(BooleanQueryBuilderTest, terms_in_query) {
     in_query_value.Accept(writer);
     std::string actual_json = buffer.GetString();
     //LOG(INFO) << "terms in sets query" << actual_json;
-    ASSERT_STREQ("{\"terms\":{\"dv\":[\"2.0\",\"4.0\",\"8.0\"]}}", actual_json.c_str());
+    EXPECT_STREQ("{\"terms\":{\"dv\":[\"2.0\",\"4.0\",\"8.0\"]}}", actual_json.c_str());
 }
 
 TEST_F(BooleanQueryBuilderTest, match_all_query) {
@@ -182,7 +182,7 @@ TEST_F(BooleanQueryBuilderTest, match_all_query) {
     match_all_query_value.Accept(writer);
     std::string actual_json = buffer.GetString();
     //LOG(INFO) << "match all query" << actual_json;
-    ASSERT_STREQ("{\"match_all\":{}}", actual_json.c_str());
+    EXPECT_STREQ("{\"match_all\":{}}", actual_json.c_str());
 }
 
 TEST_F(BooleanQueryBuilderTest, exists_query) {
@@ -202,7 +202,7 @@ TEST_F(BooleanQueryBuilderTest, exists_query) {
     rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
     exists_query_value.Accept(writer);
     std::string actual_json = buffer.GetString();
-    ASSERT_STREQ("{\"exists\":{\"field\":\"k1\"}}", actual_json.c_str());
+    EXPECT_STREQ("{\"exists\":{\"field\":\"k1\"}}", actual_json.c_str());
 }
 
 TEST_F(BooleanQueryBuilderTest, bool_query) {
@@ -267,7 +267,7 @@ TEST_F(BooleanQueryBuilderTest, bool_query) {
             "not\":{\"exists\":{\"field\":\"f1\"}}}},{\"range\":{\"k\":{\"gte\":\"a\"}}},{\"term\":"
             "{\"content\":\"wyf\"}}]}}";
     //LOG(INFO) << "bool query" << actual_json;
-    ASSERT_STREQ(expected_json.c_str(), actual_json.c_str());
+    EXPECT_STREQ(expected_json.c_str(), actual_json.c_str());
 
     delete like_predicate;
     delete function_predicate;
@@ -371,7 +371,7 @@ TEST_F(BooleanQueryBuilderTest, compound_bool_query) {
             "{\"term\":{\"content\":\"wyf\"}}]}}]}},{\"bool\":{\"should\":[{\"bool\":{\"must_not\":"
             "[{\"terms\":{\"fv\":[\"8.0\",\"16.0\"]}}]}}]}}]}}";
     //LOG(INFO) << "compound bool query" << actual_bool_json;
-    ASSERT_STREQ(expected_json.c_str(), actual_bool_json.c_str());
+    EXPECT_STREQ(expected_json.c_str(), actual_bool_json.c_str());
     delete bool_predicate_1;
     delete bool_predicate_2;
     delete bool_predicate_3;
@@ -393,7 +393,7 @@ TEST_F(BooleanQueryBuilderTest, validate_esquery) {
     ExtFunction legal_es_query(TExprNodeType::FUNCTION_CALL, function_name, es_query_cols,
                                es_query_values);
     auto st = BooleanQueryBuilder::check_es_query(legal_es_query);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     char empty_query[] = "{}";
     int empty_query_length = (int)strlen(empty_query);
     StringValue empty_query_value(empty_query, empty_query_length);
@@ -402,7 +402,7 @@ TEST_F(BooleanQueryBuilderTest, validate_esquery) {
     ExtFunction empty_es_query(TExprNodeType::FUNCTION_CALL, function_name, es_query_cols,
                                empty_query_values);
     st = BooleanQueryBuilder::check_es_query(empty_es_query);
-    ASSERT_STREQ(st.get_error_msg().c_str(), "esquery must only one root");
+    EXPECT_STREQ(st.get_error_msg().c_str(), "esquery must only one root");
     //LOG(INFO) <<"error msg:" << st1.get_error_msg();
     char malformed_query[] = "{\"bool\": {\"must_not\": {\"exists\": {";
     int malformed_query_length = (int)strlen(malformed_query);
@@ -412,7 +412,7 @@ TEST_F(BooleanQueryBuilderTest, validate_esquery) {
     ExtFunction malformed_es_query(TExprNodeType::FUNCTION_CALL, function_name, es_query_cols,
                                    malformed_query_values);
     st = BooleanQueryBuilder::check_es_query(malformed_es_query);
-    ASSERT_STREQ(st.get_error_msg().c_str(), "malformed esquery json");
+    EXPECT_STREQ(st.get_error_msg().c_str(), "malformed esquery json");
     char illegal_query[] = "{\"term\": {\"k1\" : \"2\"},\"match\": {\"k1\": \"3\"}}";
     int illegal_query_length = (int)strlen(illegal_query);
     StringValue illegal_query_value(illegal_query, illegal_query_length);
@@ -421,7 +421,7 @@ TEST_F(BooleanQueryBuilderTest, validate_esquery) {
     ExtFunction illegal_es_query(TExprNodeType::FUNCTION_CALL, function_name, es_query_cols,
                                  illegal_query_values);
     st = BooleanQueryBuilder::check_es_query(illegal_es_query);
-    ASSERT_STREQ(st.get_error_msg().c_str(), "esquery must only one root");
+    EXPECT_STREQ(st.get_error_msg().c_str(), "esquery must only one root");
     char illegal_key_query[] = "[\"22\"]";
     int illegal_key_query_length = (int)strlen(illegal_key_query);
     StringValue illegal_key_query_value(illegal_key_query, illegal_key_query_length);
@@ -430,7 +430,7 @@ TEST_F(BooleanQueryBuilderTest, validate_esquery) {
     ExtFunction illegal_key_es_query(TExprNodeType::FUNCTION_CALL, function_name, es_query_cols,
                                      illegal_key_query_values);
     st = BooleanQueryBuilder::check_es_query(illegal_key_es_query);
-    ASSERT_STREQ(st.get_error_msg().c_str(), "esquery must be a object");
+    EXPECT_STREQ(st.get_error_msg().c_str(), "esquery must be a object");
 }
 
 TEST_F(BooleanQueryBuilderTest, validate_partial) {
@@ -513,7 +513,7 @@ TEST_F(BooleanQueryBuilderTest, validate_partial) {
     std::vector<bool> result;
     BooleanQueryBuilder::validate(and_bool_predicates, &result);
     std::vector<bool> expected = {true, true, true};
-    ASSERT_EQ(result, expected);
+    EXPECT_EQ(result, expected);
     char illegal_query[] = "{\"term\": {\"k1\" : \"2\"},\"match\": {\"k1\": \"3\"}}";
     int illegal_query_length = (int)strlen(illegal_query);
     StringValue illegal_query_value(illegal_query, illegal_query_length);
@@ -529,7 +529,7 @@ TEST_F(BooleanQueryBuilderTest, validate_partial) {
     std::vector<bool> result1;
     BooleanQueryBuilder::validate(and_bool_predicates_1, &result1);
     std::vector<bool> expected1 = {true, true, false};
-    ASSERT_EQ(result1, expected1);
+    EXPECT_EQ(result1, expected1);
 }
 
 // ( k >= "a" and (fv not in [8.0, 16.0]) or (content != "wyf") ) or content like "a%e%g_"
@@ -604,7 +604,7 @@ TEST_F(BooleanQueryBuilderTest, validate_compound_and) {
     std::vector<bool> result1;
     BooleanQueryBuilder::validate(or_predicates, &result1);
     std::vector<bool> expected1 = {true};
-    ASSERT_TRUE(result1 == expected1);
+    EXPECT_TRUE(result1 == expected1);
 
     rapidjson::Document document;
     rapidjson::Value compound_and_value(rapidjson::kObjectType);
@@ -619,11 +619,6 @@ TEST_F(BooleanQueryBuilderTest, validate_compound_and) {
             "\"should\":[{\"range\":{\"k\":{\"gte\":\"a\"}}}]}},{\"bool\":{\"should\":[{\"bool\":{"
             "\"must_not\":[{\"term\":{\"content\":\"wyf\"}}]}},{\"bool\":{\"must_not\":[{\"terms\":"
             "{\"fv\":[\"8.0\",\"16.0\"]}}]}}]}}]}},{\"wildcard\":{\"content\":\"a*e*g?\"}}]}}]}}";
-    ASSERT_STREQ(expected_json.c_str(), actual_bool_json.c_str());
+    EXPECT_STREQ(expected_json.c_str(), actual_bool_json.c_str());
 }
 } // namespace doris
-
-int main(int argc, char* argv[]) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/es_scan_node_test.cpp b/be/test/exec/es_scan_node_test.cpp
index e6751c7886..6b5daaeb99 100644
--- a/be/test/exec/es_scan_node_test.cpp
+++ b/be/test/exec/es_scan_node_test.cpp
@@ -107,7 +107,7 @@ protected:
 TEST_F(EsScanNodeTest, normal_use) {
     EsScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     TEsScanRange es_scan_range;
     es_scan_range.__set_index("index1");
     es_scan_range.__set_type("docs");
@@ -126,28 +126,23 @@ TEST_F(EsScanNodeTest, normal_use) {
     scan_ranges.push_back(scan_range_params);
 
     status = scan_node.set_scan_ranges(scan_ranges);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     std::stringstream out;
     scan_node.debug_string(1, &out);
     LOG(WARNING) << out.str();
 
     status = scan_node.open(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     std::shared_ptr<MemTracker> mem_tracker(new MemTracker(-1));
     RowBatch row_batch(scan_node._row_descriptor, _runtime_state.batch_size(), mem_tracker.get());
     bool eos = false;
     status = scan_node.get_next(&_runtime_state, &row_batch, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_EQ(2, row_batch.num_rows());
-    ASSERT_TRUE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_EQ(2, row_batch.num_rows());
+    EXPECT_TRUE(eos);
 
     status = scan_node.close(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/es_scan_reader_test.cpp b/be/test/exec/es_scan_reader_test.cpp
index 8649ebec1a..9c4185086f 100644
--- a/be/test/exec/es_scan_reader_test.cpp
+++ b/be/test/exec/es_scan_reader_test.cpp
@@ -208,7 +208,7 @@ public:
         mock_es_server->register_handler(DELETE, "/_search/scroll", &rest_clear_scroll_action);
         mock_es_server->start();
         real_port = mock_es_server->get_real_port();
-        ASSERT_NE(0, real_port);
+        EXPECT_NE(0, real_port);
     }
 
     static void TearDownTestCase() { delete mock_es_server; }
@@ -231,22 +231,17 @@ TEST_F(MockESServerTest, workflow) {
                                                                  docvalue_context, &doc_value_mode);
     ESScanReader reader(target, props, doc_value_mode);
     auto st = reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     bool eos = false;
     std::unique_ptr<ScrollParser> parser = nullptr;
     while (!eos) {
         st = reader.get_next(&eos, parser);
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
         if (eos) {
             break;
         }
     }
     auto cst = reader.close();
-    ASSERT_TRUE(cst.ok());
+    EXPECT_TRUE(cst.ok());
 }
 } // namespace doris
-
-int main(int argc, char* argv[]) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/hash_table_test.cpp b/be/test/exec/hash_table_test.cpp
index df5d29da52..15d90d0bd3 100644
--- a/be/test/exec/hash_table_test.cpp
+++ b/be/test/exec/hash_table_test.cpp
@@ -37,7 +37,7 @@
 #include "runtime/runtime_state.h"
 #include "runtime/string_value.h"
 #include "runtime/test_env.h"
-#include "test_util/test_util.h"
+#include "testutil/test_util.h"
 #include "util/cpu_info.h"
 #include "util/runtime_profile.h"
 #include "util/time.h"
@@ -225,7 +225,7 @@ TEST_F(HashTableTest, BasicTest) {
         hash_table.insert(build_rows[i]);
     }
 
-    EXPECT_EQ(hash_table.size(), 5);
+    EXPECT_EQ(5, hash_table.size());
 
     // Do a full table scan and validate returned pointers
     full_scan(&hash_table, 0, 5, true, scan_rows, build_rows);
@@ -384,21 +384,9 @@ TEST_F(HashTableTest, GrowTableTest2) {
     size_t counter = 0;
     auto func = [&](TupleRow* row) { counter++; };
     hash_table.for_each_row(func);
-    ASSERT_EQ(counter, hash_table.size());
+    EXPECT_EQ(counter, hash_table.size());
 
     hash_table.close();
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    doris::CpuInfo::init();
-    doris::MemInfo::init();
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/json_scanner_test.cpp b/be/test/exec/json_scanner_test.cpp
index 7aa43af655..b7006f938b 100644
--- a/be/test/exec/json_scanner_test.cpp
+++ b/be/test/exec/json_scanner_test.cpp
@@ -26,9 +26,9 @@
 #include "exec/broker_scan_node.h"
 #include "exec/local_file_reader.h"
 #include "exprs/cast_functions.h"
+#include "exprs/decimalv2_operators.h"
 #include "gen_cpp/Descriptors_types.h"
 #include "gen_cpp/PlanNodes_types.h"
-#include "exprs/decimalv2_operators.h"
 #include "runtime/descriptors.h"
 #include "runtime/exec_env.h"
 #include "runtime/row_batch.h"
@@ -76,7 +76,7 @@ private:
 #define DST_TUPLE_SLOT_ID_START 1
 #define SRC_TUPLE_SLOT_ID_START 7
 int JsonScannerTest::create_src_tuple(TDescriptorTable& t_desc_table, int next_slot_id) {
-    const char *columnNames[] = {"category","author","title","price", "largeint", "decimal"};
+    const char* columnNames[] = {"category", "author", "title", "price", "largeint", "decimal"};
     for (int i = 0; i < COLUMN_NUMBERS; i++) {
         TSlotDescriptor slot_desc;
 
@@ -225,7 +225,7 @@ int JsonScannerTest::create_dst_tuple(TDescriptorTable& t_desc_table, int next_s
         t_desc_table.slotDescriptors.push_back(slot_desc);
     }
     byteOffset += 8;
-    {// lagreint
+    { // lagreint
         TSlotDescriptor slot_desc;
 
         slot_desc.id = next_slot_id++;
@@ -251,7 +251,7 @@ int JsonScannerTest::create_dst_tuple(TDescriptorTable& t_desc_table, int next_s
         t_desc_table.slotDescriptors.push_back(slot_desc);
     }
     byteOffset += 16;
-    {// decimal
+    { // decimal
         TSlotDescriptor slot_desc;
 
         slot_desc.id = next_slot_id++;
@@ -533,7 +533,7 @@ TEST_F(JsonScannerTest, normal_simple_arrayjson) {
     BrokerScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     scan_node.init(_tnode);
     auto status = scan_node.prepare(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     // set scan range
     std::vector<TScanRangeParams> scan_ranges;
@@ -558,32 +558,33 @@ TEST_F(JsonScannerTest, normal_simple_arrayjson) {
 
     scan_node.set_scan_ranges(scan_ranges);
     status = scan_node.open(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     MemTracker tracker;
     // Get batch
     RowBatch batch(scan_node.row_desc(), _runtime_state.batch_size(), &tracker);
     bool eof = false;
     status = scan_node.get_next(&_runtime_state, &batch, &eof);
-    ASSERT_TRUE(status.ok());
-    ASSERT_EQ(2, batch.num_rows());
+    EXPECT_TRUE(status.ok());
+    EXPECT_EQ(2, batch.num_rows());
     // Do not use num_as_string, so largeint is too big is null and decimal value loss precision
-    auto tuple_str = batch.get_row(1)->get_tuple(0)->to_string(*scan_node.row_desc().tuple_descriptors()[0]);
-    ASSERT_TRUE(tuple_str.find("1180591620717411303424") == tuple_str.npos);
-    ASSERT_TRUE(tuple_str.find("9999999999999.999999") == tuple_str.npos);
-    ASSERT_FALSE(eof);
+    auto tuple_str =
+            batch.get_row(1)->get_tuple(0)->to_string(*scan_node.row_desc().tuple_descriptors()[0]);
+    EXPECT_TRUE(tuple_str.find("1180591620717411303424") == tuple_str.npos);
+    EXPECT_TRUE(tuple_str.find("9999999999999.999999") == tuple_str.npos);
+    EXPECT_FALSE(eof);
     batch.reset();
 
     status = scan_node.get_next(&_runtime_state, &batch, &eof);
-    ASSERT_TRUE(status.ok());
-    ASSERT_EQ(0, batch.num_rows());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(status.ok());
+    EXPECT_EQ(0, batch.num_rows());
+    EXPECT_TRUE(eof);
 
     // Use num_as_string load data again
     BrokerScanNode scan_node2(&_obj_pool, _tnode, *_desc_tbl);
     scan_node2.init(_tnode);
     status = scan_node2.prepare(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     scan_ranges.clear();
     {
         TScanRangeParams scan_range_params;
@@ -607,15 +608,16 @@ TEST_F(JsonScannerTest, normal_simple_arrayjson) {
     }
     scan_node2.set_scan_ranges(scan_ranges);
     status = scan_node2.open(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     status = scan_node2.get_next(&_runtime_state, &batch, &eof);
-    ASSERT_TRUE(status.ok());
-    ASSERT_EQ(2, batch.num_rows());
+    EXPECT_TRUE(status.ok());
+    EXPECT_EQ(2, batch.num_rows());
     // Use num as string, load largeint, decimal successfully
-    tuple_str = batch.get_row(1)->get_tuple(0)->to_string(*scan_node2.row_desc().tuple_descriptors()[0]);
-    ASSERT_FALSE(tuple_str.find("1180591620717411303424") == tuple_str.npos);
-    ASSERT_FALSE(tuple_str.find("9999999999999.999999") == tuple_str.npos);
+    tuple_str = batch.get_row(1)->get_tuple(0)->to_string(
+            *scan_node2.row_desc().tuple_descriptors()[0]);
+    EXPECT_FALSE(tuple_str.find("1180591620717411303424") == tuple_str.npos);
+    EXPECT_FALSE(tuple_str.find("9999999999999.999999") == tuple_str.npos);
 
     scan_node.close(&_runtime_state);
     scan_node2.close(&_runtime_state);
@@ -627,9 +629,3 @@ TEST_F(JsonScannerTest, normal_simple_arrayjson) {
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    doris::CpuInfo::init();
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/json_scanner_with_jsonpath_test.cpp b/be/test/exec/json_scanner_with_jsonpath_test.cpp
index 8c1eb17e46..c9184b3e6a 100644
--- a/be/test/exec/json_scanner_with_jsonpath_test.cpp
+++ b/be/test/exec/json_scanner_with_jsonpath_test.cpp
@@ -37,9 +37,9 @@
 
 namespace doris {
 
-class JsonScannerTest : public testing::Test {
+class JsonScannerWithJsonPathTest : public testing::Test {
 public:
-    JsonScannerTest() : _runtime_state(TQueryGlobals()) {
+    JsonScannerWithJsonPathTest() : _runtime_state(TQueryGlobals()) {
         init();
         _runtime_state._instance_mem_tracker.reset(new MemTracker());
         _runtime_state._exec_env = ExecEnv::GetInstance();
@@ -73,7 +73,8 @@ private:
 #define COLUMN_NUMBERS 4
 #define DST_TUPLE_SLOT_ID_START 1
 #define SRC_TUPLE_SLOT_ID_START 5
-int JsonScannerTest::create_src_tuple(TDescriptorTable& t_desc_table, int next_slot_id) {
+int JsonScannerWithJsonPathTest::create_src_tuple(TDescriptorTable& t_desc_table,
+                                                  int next_slot_id) {
     const char* columnNames[] = {"k1", "kind", "ip", "value"};
     for (int i = 0; i < COLUMN_NUMBERS; i++) {
         TSlotDescriptor slot_desc;
@@ -115,7 +116,8 @@ int JsonScannerTest::create_src_tuple(TDescriptorTable& t_desc_table, int next_s
     return next_slot_id;
 }
 
-int JsonScannerTest::create_dst_tuple(TDescriptorTable& t_desc_table, int next_slot_id) {
+int JsonScannerWithJsonPathTest::create_dst_tuple(TDescriptorTable& t_desc_table,
+                                                  int next_slot_id) {
     int32_t byteOffset = 8;
     { //k1
         TSlotDescriptor slot_desc;
@@ -237,7 +239,7 @@ int JsonScannerTest::create_dst_tuple(TDescriptorTable& t_desc_table, int next_s
     return next_slot_id;
 }
 
-void JsonScannerTest::init_desc_table() {
+void JsonScannerWithJsonPathTest::init_desc_table() {
     TDescriptorTable t_desc_table;
 
     // table descriptors
@@ -261,7 +263,7 @@ void JsonScannerTest::init_desc_table() {
     _runtime_state.set_desc_tbl(_desc_tbl);
 }
 
-void JsonScannerTest::create_expr_info() {
+void JsonScannerWithJsonPathTest::create_expr_info() {
     TTypeDesc varchar_type;
     {
         TTypeNode node;
@@ -342,7 +344,7 @@ void JsonScannerTest::create_expr_info() {
     _params.__set_src_tuple_id(TUPLE_ID_SRC);
 }
 
-void JsonScannerTest::init() {
+void JsonScannerWithJsonPathTest::init() {
     create_expr_info();
     init_desc_table();
 
@@ -357,11 +359,11 @@ void JsonScannerTest::init() {
     _tnode.__isset.broker_scan_node = true;
 }
 
-TEST_F(JsonScannerTest, normal) {
+TEST_F(JsonScannerWithJsonPathTest, normal) {
     BrokerScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     scan_node.init(_tnode);
     auto status = scan_node.prepare(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     // set scan range
     std::vector<TScanRangeParams> scan_ranges;
@@ -389,22 +391,22 @@ TEST_F(JsonScannerTest, normal) {
 
     scan_node.set_scan_ranges(scan_ranges);
     status = scan_node.open(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     MemTracker tracker;
     // Get batch
     RowBatch batch(scan_node.row_desc(), _runtime_state.batch_size(), &tracker);
     bool eof = false;
     status = scan_node.get_next(&_runtime_state, &batch, &eof);
-    ASSERT_TRUE(status.ok());
-    ASSERT_EQ(2, batch.num_rows());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(status.ok());
+    EXPECT_EQ(2, batch.num_rows());
+    EXPECT_FALSE(eof);
     batch.reset();
 
     status = scan_node.get_next(&_runtime_state, &batch, &eof);
-    ASSERT_TRUE(status.ok());
-    ASSERT_EQ(0, batch.num_rows());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(status.ok());
+    EXPECT_EQ(0, batch.num_rows());
+    EXPECT_TRUE(eof);
 
     scan_node.close(&_runtime_state);
     {
@@ -415,9 +417,3 @@ TEST_F(JsonScannerTest, normal) {
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    doris::CpuInfo::init();
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/multi_bytes_separator_test.cpp b/be/test/exec/multi_bytes_separator_test.cpp
index 4a113a97fa..3712f6b141 100644
--- a/be/test/exec/multi_bytes_separator_test.cpp
+++ b/be/test/exec/multi_bytes_separator_test.cpp
@@ -15,8 +15,6 @@
 // specific language governing permissions and limitations
 // under the License.
 
-#include "exec/broker_scanner.h"
-
 #include <gtest/gtest.h>
 
 #include <map>
@@ -24,6 +22,7 @@
 #include <vector>
 
 #include "common/object_pool.h"
+#include "exec/broker_scanner.h"
 #include "exec/local_file_reader.h"
 #include "exprs/cast_functions.h"
 #include "gen_cpp/Descriptors_types.h"
@@ -36,9 +35,10 @@
 
 namespace doris {
 
-class MultiBytesSeparatorTest: public testing::Test {
+class MultiBytesSeparatorTest : public testing::Test {
 public:
     MultiBytesSeparatorTest() : _runtime_state(TQueryGlobals()) {}
+
 private:
     RuntimeState _runtime_state;
 
@@ -47,7 +47,6 @@ protected:
     virtual void TearDown() {}
 };
 
-
 TEST_F(MultiBytesSeparatorTest, normal) {
     TBrokerScanRangeParams params;
     params.column_separator = ',';
@@ -70,9 +69,9 @@ TEST_F(MultiBytesSeparatorTest, normal) {
         std::string line = "AAAA";
         Slice s(line);
         scanner.split_line(s);
-        ASSERT_EQ(2, scanner._split_values.size());
-        ASSERT_EQ(0, scanner._split_values[0].size);
-        ASSERT_EQ(0, scanner._split_values[1].size);
+        EXPECT_EQ(2, scanner._split_values.size());
+        EXPECT_EQ(0, scanner._split_values[0].size);
+        EXPECT_EQ(0, scanner._split_values[1].size);
     }
 
     // 2.
@@ -80,8 +79,8 @@ TEST_F(MultiBytesSeparatorTest, normal) {
         std::string line = "ABAA";
         Slice s(line);
         scanner.split_line(s);
-        ASSERT_EQ(1, scanner._split_values.size());
-        ASSERT_EQ(4, scanner._split_values[0].size);
+        EXPECT_EQ(1, scanner._split_values.size());
+        EXPECT_EQ(4, scanner._split_values[0].size);
     }
 
     // 3.
@@ -89,8 +88,8 @@ TEST_F(MultiBytesSeparatorTest, normal) {
         std::string line = "";
         Slice s(line);
         scanner.split_line(s);
-        ASSERT_EQ(1, scanner._split_values.size());
-        ASSERT_EQ(0, scanner._split_values[0].size);
+        EXPECT_EQ(1, scanner._split_values.size());
+        EXPECT_EQ(0, scanner._split_values[0].size);
     }
 
     // 4.
@@ -99,18 +98,12 @@ TEST_F(MultiBytesSeparatorTest, normal) {
         std::string line = "1234AAAAAAABAAAAAAAAAA";
         Slice s(line);
         scanner.split_line(s);
-        ASSERT_EQ(4, scanner._split_values.size());
-        ASSERT_EQ(4, scanner._split_values[0].size);
-        ASSERT_EQ(4, scanner._split_values[1].size);
-        ASSERT_EQ(0, scanner._split_values[2].size);
-        ASSERT_EQ(2, scanner._split_values[3].size);
+        EXPECT_EQ(4, scanner._split_values.size());
+        EXPECT_EQ(4, scanner._split_values[0].size);
+        EXPECT_EQ(4, scanner._split_values[1].size);
+        EXPECT_EQ(0, scanner._split_values[2].size);
+        EXPECT_EQ(2, scanner._split_values[3].size);
     }
 }
 
-
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/mysql_scan_node_test.cpp b/be/test/exec/mysql_scan_node_test.cpp
index 9f553d7ed2..cc46f87c9a 100644
--- a/be/test/exec/mysql_scan_node_test.cpp
+++ b/be/test/exec/mysql_scan_node_test.cpp
@@ -173,22 +173,22 @@ protected:
 TEST_F(MysqlScanNodeTest, normal_use) {
     MysqlScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(&_runtim_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     std::vector<TScanRangeParams> scan_ranges;
     status = scan_node.set_scan_ranges(scan_ranges);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     std::stringstream out;
     scan_node.debug_string(1, &out);
     LOG(WARNING) << out.str();
 
     status = scan_node.open(&_runtim_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     RowBatch row_batch(scan_node._row_descriptor, 100);
     bool eos = false;
 
     while (!eos) {
         status = scan_node.get_next(&_runtim_state, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
 
         if (!eos) {
             for (int i = 0; i < row_batch.num_rows(); ++i) {
@@ -199,67 +199,67 @@ TEST_F(MysqlScanNodeTest, normal_use) {
     }
 
     status = scan_node.close(&_runtim_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 }
 TEST_F(MysqlScanNodeTest, Prepare_fail_1) {
     MysqlScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     scan_node._tuple_id = 1;
     Status status = scan_node.prepare(&_runtim_state);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(MysqlScanNodeTest, Prepare_fail_2) {
     MysqlScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     TableDescriptor* old = _desc_tbl->_tuple_desc_map[(TupleId)0]->_table_desc;
     _desc_tbl->_tuple_desc_map[(TupleId)0]->_table_desc = nullptr;
     Status status = scan_node.prepare(&_runtim_state);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     _desc_tbl->_tuple_desc_map[(TupleId)0]->_table_desc = old;
 }
 TEST_F(MysqlScanNodeTest, open_fail_1) {
     MysqlScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(&_runtim_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     scan_node._table_name = "no_such_table";
     status = scan_node.open(&_runtim_state);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(MysqlScanNodeTest, open_fail_3) {
     MysqlScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(&_runtim_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     scan_node._columns.clear();
     scan_node._columns.push_back("id");
     status = scan_node.open(&_runtim_state);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(MysqlScanNodeTest, open_fail_2) {
     MysqlScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(&_runtim_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     scan_node._my_param.host = "";
     status = scan_node.open(&_runtim_state);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(MysqlScanNodeTest, invalid_input) {
     MysqlScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(nullptr);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scan_node.prepare(&_runtim_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scan_node.prepare(&_runtim_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scan_node.open(nullptr);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scan_node.open(&_runtim_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     RowBatch row_batch(scan_node._row_descriptor, 100);
     bool eos = false;
     status = scan_node.get_next(nullptr, &row_batch, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 
     while (!eos) {
         status = scan_node.get_next(&_runtim_state, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
 
         for (int i = 0; i < row_batch.num_rows(); ++i) {
             TupleRow* row = row_batch.get_row(i);
@@ -270,22 +270,11 @@ TEST_F(MysqlScanNodeTest, invalid_input) {
 TEST_F(MysqlScanNodeTest, no_init) {
     MysqlScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.open(&_runtim_state);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     RowBatch row_batch(scan_node._row_descriptor, 100);
     bool eos = false;
     status = scan_node.get_next(&_runtim_state, &row_batch, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/mysql_scanner_test.cpp b/be/test/exec/mysql_scanner_test.cpp
index 56a9054263..4a95cef2b3 100644
--- a/be/test/exec/mysql_scanner_test.cpp
+++ b/be/test/exec/mysql_scanner_test.cpp
@@ -45,18 +45,18 @@ protected:
 TEST_F(MysqlScannerTest, normal_use) {
     MysqlScanner scanner(_param);
     Status status = scanner.open();
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     std::vector<std::string> fields;
     fields.push_back("*");
     std::vector<std::string> filters;
     filters.push_back("id = 1");
     status = scanner.query("dim_lbs_device", fields, filters);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     bool eos = false;
     char** buf;
     unsigned long* length;
     status = scanner.get_next_row(nullptr, &length, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 
     while (!eos) {
         status = scanner.get_next_row(&buf, &length, &eos);
@@ -65,7 +65,7 @@ TEST_F(MysqlScannerTest, normal_use) {
             break;
         }
 
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
 
         for (int i = 0; i < scanner.field_num(); ++i) {
             if (buf[i]) {
@@ -84,44 +84,33 @@ TEST_F(MysqlScannerTest, no_init) {
     std::vector<std::string> filters;
     filters.push_back("id = 1");
     Status status = scanner.query("dim_lbs_device", fields, filters);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scanner.query("select 1");
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     bool eos = false;
     char** buf;
     unsigned long* length;
     status = scanner.get_next_row(&buf, &length, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(MysqlScannerTest, query_failed) {
     MysqlScanner scanner(_param);
     Status status = scanner.open();
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     std::vector<std::string> fields;
     fields.push_back("*");
     std::vector<std::string> filters;
     filters.push_back("id = 1");
     status = scanner.query("no_such_table", fields, filters);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(MysqlScannerTest, open_failed) {
     MysqlScannerParam invalid_param;
     MysqlScanner scanner(invalid_param);
     Status status = scanner.open();
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/new_olap_scan_node_test.cpp b/be/test/exec/new_olap_scan_node_test.cpp
index d52f3e6476..ca78c58f41 100644
--- a/be/test/exec/new_olap_scan_node_test.cpp
+++ b/be/test/exec/new_olap_scan_node_test.cpp
@@ -284,10 +284,10 @@ private:
 TEST_F(TestOlapScanNode, SimpleTest) {
     OlapScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scan_node.open(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(scan_node.set_scan_ranges(_scan_ranges).ok());
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(scan_node.set_scan_ranges(_scan_ranges).ok());
 
     RowBatch row_batch(scan_node._row_descriptor, _runtime_stat.batch_size());
     int num_rows = 0;
@@ -296,13 +296,13 @@ TEST_F(TestOlapScanNode, SimpleTest) {
     while (!eos) {
         row_batch.reset();
         status = scan_node.get_next(&_runtime_stat, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         VLOG_CRITICAL << "num_rows: " << row_batch.num_rows();
         num_rows += row_batch.num_rows();
     }
 
-    ASSERT_EQ(num_rows, 1000);
-    ASSERT_TRUE(scan_node.close(&_runtime_stat).ok());
+    EXPECT_EQ(num_rows, 1000);
+    EXPECT_TRUE(scan_node.close(&_runtime_stat).ok());
 }
 
 TEST_F(TestOlapScanNode, MultiColumnSingleVersionTest) {
@@ -314,10 +314,10 @@ TEST_F(TestOlapScanNode, MultiColumnSingleVersionTest) {
 
     OlapScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scan_node.open(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(scan_node.set_scan_ranges(_scan_ranges).ok());
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(scan_node.set_scan_ranges(_scan_ranges).ok());
 
     RowBatch row_batch(scan_node._row_descriptor, _runtime_stat.batch_size());
     int num_rows = 0;
@@ -327,21 +327,21 @@ TEST_F(TestOlapScanNode, MultiColumnSingleVersionTest) {
     while (!eos) {
         row_batch.reset();
         status = scan_node.get_next(&_runtime_stat, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
 
         for (int i = 0; i < row_batch.num_rows(); ++i) {
             TupleRow* row = row_batch.get_row(i);
             VLOG_NOTICE << "input row: " << print_row(row, scan_node._row_descriptor);
-            ASSERT_LT(data_index, data.size());
-            ASSERT_EQ(data[data_index], print_row(row, scan_node._row_descriptor));
+            EXPECT_LT(data_index, data.size());
+            EXPECT_EQ(data[data_index], print_row(row, scan_node._row_descriptor));
             ++data_index;
         }
 
         num_rows += row_batch.num_rows();
     }
 
-    ASSERT_EQ(num_rows, data.size());
-    ASSERT_TRUE(scan_node.close(&_runtime_stat).ok());
+    EXPECT_EQ(num_rows, data.size());
+    EXPECT_TRUE(scan_node.close(&_runtime_stat).ok());
 }
 
 TEST_F(TestOlapScanNode, MultiColumnMultiVersionTest) {
@@ -353,10 +353,10 @@ TEST_F(TestOlapScanNode, MultiColumnMultiVersionTest) {
 
     OlapScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scan_node.open(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(scan_node.set_scan_ranges(_scan_ranges).ok());
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(scan_node.set_scan_ranges(_scan_ranges).ok());
 
     RowBatch row_batch(scan_node._row_descriptor, _runtime_stat.batch_size());
     int num_rows = 0;
@@ -366,35 +366,23 @@ TEST_F(TestOlapScanNode, MultiColumnMultiVersionTest) {
     while (!eos) {
         row_batch.reset();
         status = scan_node.get_next(&_runtime_stat, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
 
         for (int i = 0; i < row_batch.num_rows(); ++i) {
             TupleRow* row = row_batch.get_row(i);
             VLOG_NOTICE << "input row: " << print_row(row, scan_node._row_descriptor);
-            ASSERT_LT(data_index, data.size());
-            ASSERT_EQ(data[data_index], print_row(row, scan_node._row_descriptor));
+            EXPECT_LT(data_index, data.size());
+            EXPECT_EQ(data[data_index], print_row(row, scan_node._row_descriptor));
             ++data_index;
         }
 
         num_rows += row_batch.num_rows();
     }
 
-    ASSERT_EQ(num_rows, data.size());
-    ASSERT_TRUE(scan_node.close(&_runtime_stat).ok());
+    EXPECT_EQ(num_rows, data.size());
+    EXPECT_TRUE(scan_node.close(&_runtime_stat).ok());
 }
 
 } // namespace doris
 
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    doris::CpuInfo::init();
-    return RUN_ALL_TESTS();
-}
-
 /* vim: set expandtab ts=4 sw=4 sts=4 tw=100: */
diff --git a/be/test/exec/olap_common_test.cpp b/be/test/exec/olap_common_test.cpp
index 3ba0a03262..e44ae17a0f 100644
--- a/be/test/exec/olap_common_test.cpp
+++ b/be/test/exec/olap_common_test.cpp
@@ -15,13 +15,12 @@
 // specific language governing permissions and limitations
 // under the License.
 
+#include <gtest/gtest.h>
 #include <stdio.h>
 #include <stdlib.h>
 
 #include <iostream>
 #include <vector>
-
-#include <gtest/gtest.h>
 #define protected public
 #define private public
 
@@ -30,8 +29,8 @@
 #include "gen_cpp/Types_types.h"
 #include "runtime/descriptors.h"
 #include "util/cpu_info.h"
-#include "util/runtime_profile.h"
 #include "util/logging.h"
+#include "util/runtime_profile.h"
 
 namespace doris {
 
@@ -44,7 +43,7 @@ void construct_scan_range(TPaloScanRange* doris_scan_range) {
     doris_scan_range->__set_version("0");
     // Useless but it is required in TPaloScanRange
     doris_scan_range->__set_version_hash("0");
-//    doris_scan_range->engine_table_name.push_back("ShowQStats");
+    //    doris_scan_range->engine_table_name.push_back("ShowQStats");
     doris_scan_range->__set_db_name("olap");
     TKeyRange key_range;
     key_range.__set_column_type(to_thrift(TYPE_INT));
@@ -64,92 +63,92 @@ public:
 
 TEST_F(ColumnValueRangeTest, ExceptionCase) {
     ColumnValueRange<int32_t> range1;
-    ASSERT_FALSE(range1.add_fixed_value(10).ok());
-    ASSERT_FALSE(range1.add_range(FILTER_LESS_OR_EQUAL, 10).ok());
+    EXPECT_FALSE(range1.add_fixed_value(10).ok());
+    EXPECT_FALSE(range1.add_range(FILTER_LESS_OR_EQUAL, 10).ok());
 }
 
 TEST_F(ColumnValueRangeTest, NormalCase) {
     ColumnValueRange<int32_t> range1("col", TYPE_INT);
 
-    ASSERT_TRUE(range1.add_fixed_value(10).ok());
-    ASSERT_TRUE(range1.add_fixed_value(20).ok());
-    ASSERT_TRUE(range1.add_fixed_value(30).ok());
+    EXPECT_TRUE(range1.add_fixed_value(10).ok());
+    EXPECT_TRUE(range1.add_fixed_value(20).ok());
+    EXPECT_TRUE(range1.add_fixed_value(30).ok());
 
-    ASSERT_TRUE(range1.is_fixed_value_range());
+    EXPECT_TRUE(range1.is_fixed_value_range());
 
-    ASSERT_TRUE(range1.add_range(FILTER_LESS, 30).ok());
-    ASSERT_FALSE(range1.is_empty_value_range());
+    EXPECT_TRUE(range1.add_range(FILTER_LESS, 30).ok());
+    EXPECT_FALSE(range1.is_empty_value_range());
 
     ColumnValueRange<int32_t> range2("col", TYPE_INT);
-    ASSERT_TRUE(range2.add_fixed_value(30).ok());
-    ASSERT_FALSE(range1.has_intersection(range2));
+    EXPECT_TRUE(range2.add_fixed_value(30).ok());
+    EXPECT_FALSE(range1.has_intersection(range2));
 
-    ASSERT_TRUE(range2.add_fixed_value(20).ok());
-    ASSERT_TRUE(range1.has_intersection(range2));
+    EXPECT_TRUE(range2.add_fixed_value(20).ok());
+    EXPECT_TRUE(range1.has_intersection(range2));
 
-    ASSERT_TRUE(range2.is_fixed_value_range());
-    ASSERT_TRUE(range2.add_range(FILTER_LARGER, 50).ok());
-    ASSERT_FALSE(range2.is_fixed_value_range());
+    EXPECT_TRUE(range2.is_fixed_value_range());
+    EXPECT_TRUE(range2.add_range(FILTER_LARGER, 50).ok());
+    EXPECT_FALSE(range2.is_fixed_value_range());
 
-    ASSERT_TRUE(range2.is_empty_value_range());
-    ASSERT_FALSE(range1.has_intersection(range2));
+    EXPECT_TRUE(range2.is_empty_value_range());
+    EXPECT_FALSE(range1.has_intersection(range2));
 }
 
 TEST_F(ColumnValueRangeTest, FixedAddRangeTest) {
     ColumnValueRange<int32_t> range1("col", TYPE_INT);
 
     for (int i = 0; i < 100; i += 10) {
-        ASSERT_TRUE(range1.add_fixed_value(i).ok());
+        EXPECT_TRUE(range1.add_fixed_value(i).ok());
     }
 
-    ASSERT_TRUE(range1.add_range(FILTER_LARGER_OR_EQUAL, 10).ok());
+    EXPECT_TRUE(range1.add_range(FILTER_LARGER_OR_EQUAL, 10).ok());
     std::set<int32_t> res_set = range1.get_fixed_value_set();
-    ASSERT_EQ(res_set.count(0), 0);
+    EXPECT_EQ(res_set.count(0), 0);
 
     for (int i = 10; i < 100; i += 10) {
-        ASSERT_EQ(res_set.count(i), 1);
+        EXPECT_EQ(res_set.count(i), 1);
     }
 
-    ASSERT_TRUE(range1.add_range(FILTER_LARGER, 20).ok());
+    EXPECT_TRUE(range1.add_range(FILTER_LARGER, 20).ok());
     res_set = range1.get_fixed_value_set();
-    ASSERT_EQ(res_set.count(10), 0);
-    ASSERT_EQ(res_set.count(20), 0);
+    EXPECT_EQ(res_set.count(10), 0);
+    EXPECT_EQ(res_set.count(20), 0);
 
     for (int i = 30; i < 100; i += 10) {
-        ASSERT_EQ(res_set.count(i), 1);
+        EXPECT_EQ(res_set.count(i), 1);
     }
 
-    ASSERT_TRUE(range1.add_range(FILTER_LESS, 90).ok());
+    EXPECT_TRUE(range1.add_range(FILTER_LESS, 90).ok());
     res_set = range1.get_fixed_value_set();
-    ASSERT_EQ(res_set.count(90), 0);
+    EXPECT_EQ(res_set.count(90), 0);
 
     for (int i = 30; i < 90; i += 10) {
-        ASSERT_EQ(res_set.count(i), 1);
+        EXPECT_EQ(res_set.count(i), 1);
     }
 
-    ASSERT_TRUE(range1.add_range(FILTER_LESS_OR_EQUAL, 70).ok());
+    EXPECT_TRUE(range1.add_range(FILTER_LESS_OR_EQUAL, 70).ok());
     res_set = range1.get_fixed_value_set();
-    ASSERT_EQ(res_set.count(80), 0);
+    EXPECT_EQ(res_set.count(80), 0);
 
     for (int i = 30; i < 80; i += 10) {
-        ASSERT_EQ(res_set.count(i), 1);
+        EXPECT_EQ(res_set.count(i), 1);
     }
 
-    ASSERT_TRUE(range1.add_range(FILTER_LESS_OR_EQUAL, 30).ok());
+    EXPECT_TRUE(range1.add_range(FILTER_LESS_OR_EQUAL, 30).ok());
     res_set = range1.get_fixed_value_set();
-    ASSERT_EQ(res_set.count(30), 1);
+    EXPECT_EQ(res_set.count(30), 1);
 
     for (int i = 40; i < 80; i += 10) {
-        ASSERT_EQ(res_set.count(i), 0);
+        EXPECT_EQ(res_set.count(i), 0);
     }
 
-    ASSERT_TRUE(range1.add_range(FILTER_LARGER_OR_EQUAL, 30).ok());
+    EXPECT_TRUE(range1.add_range(FILTER_LARGER_OR_EQUAL, 30).ok());
     res_set = range1.get_fixed_value_set();
-    ASSERT_EQ(res_set.count(30), 1);
+    EXPECT_EQ(res_set.count(30), 1);
 
-    ASSERT_TRUE(range1.add_range(FILTER_LARGER, 30).ok());
+    EXPECT_TRUE(range1.add_range(FILTER_LARGER, 30).ok());
     res_set = range1.get_fixed_value_set();
-    ASSERT_EQ(res_set.count(30), 0);
+    EXPECT_EQ(res_set.count(30), 0);
 }
 
 TEST_F(ColumnValueRangeTest, ContainsNullTest) {
@@ -157,21 +156,20 @@ TEST_F(ColumnValueRangeTest, ContainsNullTest) {
 
     // test fixed value range intersection with null and no null range
     for (int i = 0; i < 100; i += 10) {
-        ASSERT_TRUE(range1.add_fixed_value(i).ok());
+        EXPECT_TRUE(range1.add_fixed_value(i).ok());
     }
 
     auto null_range = ColumnValueRange<int32_t>::create_empty_column_value_range(TYPE_INT);
     null_range.set_contain_null(true);
-    ASSERT_TRUE(!null_range.is_empty_value_range());
+    EXPECT_TRUE(!null_range.is_empty_value_range());
     null_range.intersection(range1);
-    ASSERT_TRUE(null_range.is_empty_value_range());
+    EXPECT_TRUE(null_range.is_empty_value_range());
 
     auto no_null_range = ColumnValueRange<int32_t>::create_empty_column_value_range(TYPE_INT);
     no_null_range.set_contain_null(false);
     no_null_range.intersection(range1);
-    ASSERT_EQ(no_null_range._fixed_values, range1._fixed_values);
-    ASSERT_EQ(no_null_range._contain_null, range1._contain_null);
-
+    EXPECT_EQ(no_null_range._fixed_values, range1._fixed_values);
+    EXPECT_EQ(no_null_range._contain_null, range1._contain_null);
 
     // test scoped value range intersection with null and no null range
     range1.set_whole_value_range();
@@ -180,133 +178,132 @@ TEST_F(ColumnValueRangeTest, ContainsNullTest) {
 
     null_range = ColumnValueRange<int32_t>::create_empty_column_value_range(TYPE_INT);
     null_range.set_contain_null(true);
-    ASSERT_TRUE(!null_range.is_empty_value_range());
+    EXPECT_TRUE(!null_range.is_empty_value_range());
     null_range.intersection(range1);
-    ASSERT_TRUE(null_range.is_empty_value_range());
+    EXPECT_TRUE(null_range.is_empty_value_range());
 
     no_null_range = ColumnValueRange<int32_t>::create_empty_column_value_range(TYPE_INT);
     no_null_range.set_contain_null(false);
     no_null_range.intersection(range1);
-    ASSERT_TRUE(no_null_range._fixed_values.empty());
-    ASSERT_EQ(no_null_range._low_value, range1._low_value);
-    ASSERT_EQ(no_null_range._high_value, range1._high_value);
-    ASSERT_EQ(no_null_range._contain_null, range1._contain_null);
+    EXPECT_TRUE(no_null_range._fixed_values.empty());
+    EXPECT_EQ(no_null_range._low_value, range1._low_value);
+    EXPECT_EQ(no_null_range._high_value, range1._high_value);
+    EXPECT_EQ(no_null_range._contain_null, range1._contain_null);
 }
 
 TEST_F(ColumnValueRangeTest, RangeAddRangeTest) {
     ColumnValueRange<int32_t> range1("col", TYPE_INT);
 
-    ASSERT_EQ(range1.get_range_min_value(), std::numeric_limits<int32_t>::min());
-    ASSERT_EQ(range1.get_range_max_value(), std::numeric_limits<int32_t>::max());
+    EXPECT_EQ(range1.get_range_min_value(), std::numeric_limits<int32_t>::min());
+    EXPECT_EQ(range1.get_range_max_value(), std::numeric_limits<int32_t>::max());
 
-    ASSERT_TRUE(range1.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
-    ASSERT_EQ(range1.get_range_min_value(), 20);
+    EXPECT_TRUE(range1.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
+    EXPECT_EQ(range1.get_range_min_value(), 20);
 
-    ASSERT_TRUE(range1.add_range(FILTER_LARGER, 30).ok());
-    ASSERT_EQ(range1.get_range_min_value(), 30);
+    EXPECT_TRUE(range1.add_range(FILTER_LARGER, 30).ok());
+    EXPECT_EQ(range1.get_range_min_value(), 30);
 
-    ASSERT_TRUE(range1.add_range(FILTER_LESS, 100).ok());
-    ASSERT_EQ(range1.get_range_max_value(), 100);
+    EXPECT_TRUE(range1.add_range(FILTER_LESS, 100).ok());
+    EXPECT_EQ(range1.get_range_max_value(), 100);
 
-    ASSERT_TRUE(range1.add_range(FILTER_LESS_OR_EQUAL, 90).ok());
-    ASSERT_EQ(range1.get_range_max_value(), 90);
+    EXPECT_TRUE(range1.add_range(FILTER_LESS_OR_EQUAL, 90).ok());
+    EXPECT_EQ(range1.get_range_max_value(), 90);
 
-    ASSERT_TRUE(range1.add_range(FILTER_LESS_OR_EQUAL, 31).ok());
-    ASSERT_EQ(range1.get_range_max_value(), 31);
+    EXPECT_TRUE(range1.add_range(FILTER_LESS_OR_EQUAL, 31).ok());
+    EXPECT_EQ(range1.get_range_max_value(), 31);
 
-    ASSERT_TRUE(range1.add_range(FILTER_LESS, 31).ok());
-    ASSERT_FALSE(range1.is_empty_value_range());
+    EXPECT_TRUE(range1.add_range(FILTER_LESS, 31).ok());
+    EXPECT_FALSE(range1.is_empty_value_range());
 
-    ASSERT_TRUE(range1.add_range(FILTER_LESS, 30).ok());
-    ASSERT_TRUE(range1.is_empty_value_range());
+    EXPECT_TRUE(range1.add_range(FILTER_LESS, 30).ok());
+    EXPECT_TRUE(range1.is_empty_value_range());
 }
 
 TEST_F(ColumnValueRangeTest, RangeIntersectionTest) {
     ColumnValueRange<int32_t> range1("col", TYPE_INT);
-    ASSERT_TRUE(range1.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
+    EXPECT_TRUE(range1.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
 
     ColumnValueRange<int32_t> range2("col", TYPE_INT);
-    ASSERT_TRUE(range2.add_range(FILTER_LESS, 100).ok());
+    EXPECT_TRUE(range2.add_range(FILTER_LESS, 100).ok());
 
-    ASSERT_TRUE(range1.has_intersection(range2));
+    EXPECT_TRUE(range1.has_intersection(range2));
 
     // test intersection operation
     auto intersection_range = range1;
     intersection_range.intersection(range2);
-    ASSERT_EQ(intersection_range._low_value, 20);
-    ASSERT_EQ(intersection_range._low_op, FILTER_LARGER_OR_EQUAL);
-    ASSERT_EQ(intersection_range._high_value, 100);
-    ASSERT_EQ(intersection_range._high_op, FILTER_LESS);
+    EXPECT_EQ(intersection_range._low_value, 20);
+    EXPECT_EQ(intersection_range._low_op, FILTER_LARGER_OR_EQUAL);
+    EXPECT_EQ(intersection_range._high_value, 100);
+    EXPECT_EQ(intersection_range._high_op, FILTER_LESS);
 
-
-    ASSERT_TRUE(range1.add_range(FILTER_LESS_OR_EQUAL, 80).ok());
-    ASSERT_TRUE(range2.add_range(FILTER_LARGER, 40).ok());
-    ASSERT_TRUE(range1.has_intersection(range2));
+    EXPECT_TRUE(range1.add_range(FILTER_LESS_OR_EQUAL, 80).ok());
+    EXPECT_TRUE(range2.add_range(FILTER_LARGER, 40).ok());
+    EXPECT_TRUE(range1.has_intersection(range2));
 
     intersection_range = range1;
     intersection_range.intersection(range2);
-    ASSERT_EQ(intersection_range._low_value, 40);
-    ASSERT_EQ(intersection_range._low_op, FILTER_LARGER);
-    ASSERT_EQ(intersection_range._high_value, 80);
-    ASSERT_EQ(intersection_range._high_op, FILTER_LESS_OR_EQUAL);
+    EXPECT_EQ(intersection_range._low_value, 40);
+    EXPECT_EQ(intersection_range._low_op, FILTER_LARGER);
+    EXPECT_EQ(intersection_range._high_value, 80);
+    EXPECT_EQ(intersection_range._high_op, FILTER_LESS_OR_EQUAL);
 
-    ASSERT_TRUE(range1.add_range(FILTER_LESS_OR_EQUAL, 40).ok());
-    ASSERT_FALSE(range1.has_intersection(range2));
+    EXPECT_TRUE(range1.add_range(FILTER_LESS_OR_EQUAL, 40).ok());
+    EXPECT_FALSE(range1.has_intersection(range2));
 
     intersection_range = range1;
     intersection_range.intersection(range2);
-    ASSERT_TRUE(intersection_range.is_empty_value_range());
+    EXPECT_TRUE(intersection_range.is_empty_value_range());
 }
 
 TEST_F(ColumnValueRangeTest, FixedValueIntersectionTest) {
     ColumnValueRange<int32_t> range1("col", TYPE_INT);
 
     for (int i = 0; i < 100; i += 10) {
-        ASSERT_TRUE(range1.add_fixed_value(i).ok());
+        EXPECT_TRUE(range1.add_fixed_value(i).ok());
     }
 
     ColumnValueRange<int32_t> range2("col", TYPE_INT);
 
     for (int i = 50; i < 200; i += 10) {
-        ASSERT_TRUE(range2.add_fixed_value(i).ok());
+        EXPECT_TRUE(range2.add_fixed_value(i).ok());
     }
 
-    ASSERT_TRUE(range1.has_intersection(range2));
+    EXPECT_TRUE(range1.has_intersection(range2));
     // test intersection operation
     auto intersection_range = range1;
     intersection_range.intersection(range2);
-    ASSERT_EQ(intersection_range._fixed_values.size(), 5);
-    ASSERT_TRUE(intersection_range._fixed_values.count(50) == 1);
-    ASSERT_TRUE(intersection_range._fixed_values.count(90) == 1);
+    EXPECT_EQ(intersection_range._fixed_values.size(), 5);
+    EXPECT_TRUE(intersection_range._fixed_values.count(50) == 1);
+    EXPECT_TRUE(intersection_range._fixed_values.count(90) == 1);
 
-    ASSERT_TRUE(range2.add_range(FILTER_LESS_OR_EQUAL, 70).ok());
-    ASSERT_TRUE(range1.has_intersection(range2));
+    EXPECT_TRUE(range2.add_range(FILTER_LESS_OR_EQUAL, 70).ok());
+    EXPECT_TRUE(range1.has_intersection(range2));
     intersection_range = range1;
     intersection_range.intersection(range2);
-    ASSERT_EQ(intersection_range._fixed_values.size(), 3);
-    ASSERT_TRUE(intersection_range._fixed_values.count(50) == 1);
-    ASSERT_TRUE(intersection_range._fixed_values.count(70) == 1);
+    EXPECT_EQ(intersection_range._fixed_values.size(), 3);
+    EXPECT_TRUE(intersection_range._fixed_values.count(50) == 1);
+    EXPECT_TRUE(intersection_range._fixed_values.count(70) == 1);
 
-    ASSERT_TRUE(range1.add_range(FILTER_LARGER_OR_EQUAL, 50).ok());
-    ASSERT_TRUE(range1.has_intersection(range2));
+    EXPECT_TRUE(range1.add_range(FILTER_LARGER_OR_EQUAL, 50).ok());
+    EXPECT_TRUE(range1.has_intersection(range2));
     intersection_range = range1;
     intersection_range.intersection(range2);
-    ASSERT_EQ(intersection_range._fixed_values.size(), 3);
-    ASSERT_TRUE(intersection_range._fixed_values.count(50) == 1);
-    ASSERT_TRUE(intersection_range._fixed_values.count(70) == 1);
+    EXPECT_EQ(intersection_range._fixed_values.size(), 3);
+    EXPECT_TRUE(intersection_range._fixed_values.count(50) == 1);
+    EXPECT_TRUE(intersection_range._fixed_values.count(70) == 1);
 
-    ASSERT_TRUE(range2.add_range(FILTER_LESS, 60).ok());
-    ASSERT_TRUE(range1.has_intersection(range2));
+    EXPECT_TRUE(range2.add_range(FILTER_LESS, 60).ok());
+    EXPECT_TRUE(range1.has_intersection(range2));
     intersection_range = range1;
     intersection_range.intersection(range2);
-    ASSERT_EQ(intersection_range._fixed_values.size(), 1);
-    ASSERT_TRUE(intersection_range._fixed_values.count(50) == 1);
+    EXPECT_EQ(intersection_range._fixed_values.size(), 1);
+    EXPECT_TRUE(intersection_range._fixed_values.count(50) == 1);
 
-    ASSERT_TRUE(range1.add_range(FILTER_LARGER, 50).ok());
-    ASSERT_FALSE(range1.has_intersection(range2));
+    EXPECT_TRUE(range1.add_range(FILTER_LARGER, 50).ok());
+    EXPECT_FALSE(range1.has_intersection(range2));
     intersection_range = range1;
     intersection_range.intersection(range2);
-    ASSERT_TRUE(intersection_range.is_empty_value_range());
+    EXPECT_TRUE(intersection_range.is_empty_value_range());
 }
 
 TEST_F(ColumnValueRangeTest, FixedAndRangeIntersectionTest) {
@@ -317,27 +314,27 @@ TEST_F(ColumnValueRangeTest, FixedAndRangeIntersectionTest) {
             ColumnValueRange<int8_t> range2("col", TYPE_TINYINT);
 
             for (int i = 0; i < 100; i += 10) {
-                ASSERT_TRUE(range1.add_fixed_value(i).ok());
+                EXPECT_TRUE(range1.add_fixed_value(i).ok());
             }
 
-            ASSERT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
-            ASSERT_TRUE(range1.has_intersection(range2));
-            ASSERT_TRUE(range2.has_intersection(range1));
+            EXPECT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
+            EXPECT_TRUE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.has_intersection(range1));
 
-            ASSERT_TRUE(range2.add_range(FILTER_LESS, 50).ok());
-            ASSERT_TRUE(range1.has_intersection(range2));
-            ASSERT_TRUE(range2.has_intersection(range1));
+            EXPECT_TRUE(range2.add_range(FILTER_LESS, 50).ok());
+            EXPECT_TRUE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.has_intersection(range1));
 
-            ASSERT_TRUE(range2.add_range(FILTER_LARGER, 40).ok());
-            ASSERT_FALSE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.add_range(FILTER_LARGER, 40).ok());
+            EXPECT_FALSE(range1.has_intersection(range2));
 
             range2.set_whole_value_range();
-            ASSERT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 100).ok());
-            ASSERT_FALSE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 100).ok());
+            EXPECT_FALSE(range1.has_intersection(range2));
 
             range2.set_whole_value_range();
-            ASSERT_TRUE(range2.add_range(FILTER_LESS, 0).ok());
-            ASSERT_FALSE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.add_range(FILTER_LESS, 0).ok());
+            EXPECT_FALSE(range1.has_intersection(range2));
         }
 
         case TYPE_SMALLINT: {
@@ -345,27 +342,27 @@ TEST_F(ColumnValueRangeTest, FixedAndRangeIntersectionTest) {
             ColumnValueRange<int16_t> range2("col", TYPE_SMALLINT);
 
             for (int i = 0; i < 100; i += 10) {
-                ASSERT_TRUE(range1.add_fixed_value(i).ok());
+                EXPECT_TRUE(range1.add_fixed_value(i).ok());
             }
 
-            ASSERT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
-            ASSERT_TRUE(range1.has_intersection(range2));
-            ASSERT_TRUE(range2.has_intersection(range1));
+            EXPECT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
+            EXPECT_TRUE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.has_intersection(range1));
 
-            ASSERT_TRUE(range2.add_range(FILTER_LESS, 50).ok());
-            ASSERT_TRUE(range1.has_intersection(range2));
-            ASSERT_TRUE(range2.has_intersection(range1));
+            EXPECT_TRUE(range2.add_range(FILTER_LESS, 50).ok());
+            EXPECT_TRUE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.has_intersection(range1));
 
-            ASSERT_TRUE(range2.add_range(FILTER_LARGER, 40).ok());
-            ASSERT_FALSE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.add_range(FILTER_LARGER, 40).ok());
+            EXPECT_FALSE(range1.has_intersection(range2));
 
             range2.set_whole_value_range();
-            ASSERT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 100).ok());
-            ASSERT_FALSE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 100).ok());
+            EXPECT_FALSE(range1.has_intersection(range2));
 
             range2.set_whole_value_range();
-            ASSERT_TRUE(range2.add_range(FILTER_LESS, 0).ok());
-            ASSERT_FALSE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.add_range(FILTER_LESS, 0).ok());
+            EXPECT_FALSE(range1.has_intersection(range2));
         }
 
         case TYPE_INT: {
@@ -373,27 +370,27 @@ TEST_F(ColumnValueRangeTest, FixedAndRangeIntersectionTest) {
             ColumnValueRange<int32_t> range2("col", TYPE_INT);
 
             for (int i = 0; i < 100; i += 10) {
-                ASSERT_TRUE(range1.add_fixed_value(i).ok());
+                EXPECT_TRUE(range1.add_fixed_value(i).ok());
             }
 
-            ASSERT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
-            ASSERT_TRUE(range1.has_intersection(range2));
-            ASSERT_TRUE(range2.has_intersection(range1));
+            EXPECT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
+            EXPECT_TRUE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.has_intersection(range1));
 
-            ASSERT_TRUE(range2.add_range(FILTER_LESS, 50).ok());
-            ASSERT_TRUE(range1.has_intersection(range2));
-            ASSERT_TRUE(range2.has_intersection(range1));
+            EXPECT_TRUE(range2.add_range(FILTER_LESS, 50).ok());
+            EXPECT_TRUE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.has_intersection(range1));
 
-            ASSERT_TRUE(range2.add_range(FILTER_LARGER, 40).ok());
-            ASSERT_FALSE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.add_range(FILTER_LARGER, 40).ok());
+            EXPECT_FALSE(range1.has_intersection(range2));
 
             range2.set_whole_value_range();
-            ASSERT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 100).ok());
-            ASSERT_FALSE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 100).ok());
+            EXPECT_FALSE(range1.has_intersection(range2));
 
             range2.set_whole_value_range();
-            ASSERT_TRUE(range2.add_range(FILTER_LESS, 0).ok());
-            ASSERT_FALSE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.add_range(FILTER_LESS, 0).ok());
+            EXPECT_FALSE(range1.has_intersection(range2));
         }
 
         case TYPE_BIGINT: {
@@ -401,27 +398,27 @@ TEST_F(ColumnValueRangeTest, FixedAndRangeIntersectionTest) {
             ColumnValueRange<int64_t> range2("col", TYPE_BIGINT);
 
             for (int i = 0; i < 100; i += 10) {
-                ASSERT_TRUE(range1.add_fixed_value(i).ok());
+                EXPECT_TRUE(range1.add_fixed_value(i).ok());
             }
 
-            ASSERT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
-            ASSERT_TRUE(range1.has_intersection(range2));
-            ASSERT_TRUE(range2.has_intersection(range1));
+            EXPECT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
+            EXPECT_TRUE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.has_intersection(range1));
 
-            ASSERT_TRUE(range2.add_range(FILTER_LESS, 50).ok());
-            ASSERT_TRUE(range1.has_intersection(range2));
-            ASSERT_TRUE(range2.has_intersection(range1));
+            EXPECT_TRUE(range2.add_range(FILTER_LESS, 50).ok());
+            EXPECT_TRUE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.has_intersection(range1));
 
-            ASSERT_TRUE(range2.add_range(FILTER_LARGER, 40).ok());
-            ASSERT_FALSE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.add_range(FILTER_LARGER, 40).ok());
+            EXPECT_FALSE(range1.has_intersection(range2));
 
             range2.set_whole_value_range();
-            ASSERT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 100).ok());
-            ASSERT_FALSE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 100).ok());
+            EXPECT_FALSE(range1.has_intersection(range2));
 
             range2.set_whole_value_range();
-            ASSERT_TRUE(range2.add_range(FILTER_LESS, 0).ok());
-            ASSERT_FALSE(range1.has_intersection(range2));
+            EXPECT_TRUE(range2.add_range(FILTER_LESS, 0).ok());
+            EXPECT_FALSE(range1.has_intersection(range2));
         }
 
         default:
@@ -443,7 +440,7 @@ TEST_F(OlapScanKeysTest, ExtendFixedTest) {
     ColumnValueRange<int32_t> range1("col", TYPE_BIGINT);
 
     for (int i = 0; i < 3; ++i) {
-        ASSERT_TRUE(range1.add_fixed_value(i).ok());
+        EXPECT_TRUE(range1.add_fixed_value(i).ok());
     }
 
     scan_keys.extend_scan_key(range1, 1024);
@@ -451,73 +448,73 @@ TEST_F(OlapScanKeysTest, ExtendFixedTest) {
     std::vector<std::unique_ptr<OlapScanRange>> key_range;
     scan_keys.get_key_range(&key_range);
 
-    ASSERT_EQ(key_range.size(), 3);
+    EXPECT_EQ(key_range.size(), 3);
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "0");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "0");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[1]->begin_scan_range), "1");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[1]->end_scan_range), "1");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[1]->begin_scan_range), "1");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[1]->end_scan_range), "1");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[2]->begin_scan_range), "2");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[2]->end_scan_range), "2");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[2]->begin_scan_range), "2");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[2]->end_scan_range), "2");
 
     ColumnValueRange<int32_t> range2("col", TYPE_BIGINT);
 
     for (int i = 0; i < 2; ++i) {
-        ASSERT_TRUE(range2.add_fixed_value(i).ok());
+        EXPECT_TRUE(range2.add_fixed_value(i).ok());
     }
 
     scan_keys.extend_scan_key(range2, 1024);
 
     scan_keys.get_key_range(&key_range);
 
-    ASSERT_EQ(key_range.size(), 6);
+    EXPECT_EQ(key_range.size(), 6);
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0,0");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "0,0");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0,0");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "0,0");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[1]->begin_scan_range), "1,0");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[1]->end_scan_range), "1,0");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[1]->begin_scan_range), "1,0");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[1]->end_scan_range), "1,0");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[2]->begin_scan_range), "2,0");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[2]->end_scan_range), "2,0");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[2]->begin_scan_range), "2,0");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[2]->end_scan_range), "2,0");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[3]->begin_scan_range), "0,1");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[3]->end_scan_range), "0,1");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[3]->begin_scan_range), "0,1");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[3]->end_scan_range), "0,1");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[4]->begin_scan_range), "1,1");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[4]->end_scan_range), "1,1");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[4]->begin_scan_range), "1,1");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[4]->end_scan_range), "1,1");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[5]->begin_scan_range), "2,1");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[5]->end_scan_range), "2,1");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[5]->begin_scan_range), "2,1");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[5]->end_scan_range), "2,1");
 
     range2.set_whole_value_range();
-    ASSERT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 100).ok());
+    EXPECT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 100).ok());
 
     scan_keys.extend_scan_key(range2, 1024);
 
     scan_keys.get_key_range(&key_range);
 
-    ASSERT_EQ(key_range.size(), 6);
+    EXPECT_EQ(key_range.size(), 6);
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0,0,100");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "0,0,2147483647");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0,0,100");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "0,0,2147483647");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[1]->begin_scan_range), "1,0,100");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[1]->end_scan_range), "1,0,2147483647");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[1]->begin_scan_range), "1,0,100");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[1]->end_scan_range), "1,0,2147483647");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[2]->begin_scan_range), "2,0,100");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[2]->end_scan_range), "2,0,2147483647");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[2]->begin_scan_range), "2,0,100");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[2]->end_scan_range), "2,0,2147483647");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[3]->begin_scan_range), "0,1,100");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[3]->end_scan_range), "0,1,2147483647");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[3]->begin_scan_range), "0,1,100");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[3]->end_scan_range), "0,1,2147483647");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[4]->begin_scan_range), "1,1,100");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[4]->end_scan_range), "1,1,2147483647");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[4]->begin_scan_range), "1,1,100");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[4]->end_scan_range), "1,1,2147483647");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[5]->begin_scan_range), "2,1,100");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[5]->end_scan_range), "2,1,2147483647");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[5]->begin_scan_range), "2,1,100");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[5]->end_scan_range), "2,1,2147483647");
 }
 
 TEST_F(OlapScanKeysTest, ExtendFixedAndRangeTest) {
@@ -526,47 +523,48 @@ TEST_F(OlapScanKeysTest, ExtendFixedAndRangeTest) {
     ColumnValueRange<int32_t> range1("col", TYPE_BIGINT);
 
     for (int i = 0; i < 3; ++i) {
-        ASSERT_TRUE(range1.add_fixed_value(i).ok());
+        EXPECT_TRUE(range1.add_fixed_value(i).ok());
     }
 
     scan_keys.extend_scan_key(range1, 1024);
 
     ColumnValueRange<int32_t> range2("col", TYPE_BIGINT);
-    ASSERT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
+    EXPECT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
 
     scan_keys.extend_scan_key(range2, 1024);
 
-    std::vector<std::unique_ptr<OlapScanRange>> key_range;;
+    std::vector<std::unique_ptr<OlapScanRange>> key_range;
+    ;
 
     scan_keys.get_key_range(&key_range);
 
-    ASSERT_EQ(key_range.size(), 3);
+    EXPECT_EQ(key_range.size(), 3);
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0,20");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "0,2147483647");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0,20");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "0,2147483647");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[1]->begin_scan_range), "1,20");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[1]->end_scan_range), "1,2147483647");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[1]->begin_scan_range), "1,20");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[1]->end_scan_range), "1,2147483647");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[2]->begin_scan_range), "2,20");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[2]->end_scan_range), "2,2147483647");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[2]->begin_scan_range), "2,20");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[2]->end_scan_range), "2,2147483647");
 
-    ASSERT_TRUE(range2.add_range(FILTER_LESS, 100).ok());
+    EXPECT_TRUE(range2.add_range(FILTER_LESS, 100).ok());
 
     scan_keys.extend_scan_key(range2, 1024);
 
     scan_keys.get_key_range(&key_range);
 
-    ASSERT_EQ(key_range.size(), 3);
+    EXPECT_EQ(key_range.size(), 3);
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0,20");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "0,2147483647");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0,20");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "0,2147483647");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[1]->begin_scan_range), "1,20");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[1]->end_scan_range), "1,2147483647");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[1]->begin_scan_range), "1,20");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[1]->end_scan_range), "1,2147483647");
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[2]->begin_scan_range), "2,20");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[2]->end_scan_range), "2,2147483647");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[2]->begin_scan_range), "2,20");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[2]->end_scan_range), "2,2147483647");
 }
 
 TEST_F(OlapScanKeysTest, ExtendRangeTest) {
@@ -574,81 +572,83 @@ TEST_F(OlapScanKeysTest, ExtendRangeTest) {
     config::doris_max_scan_key_num = 1;
 
     ColumnValueRange<int64_t> range2("col", TYPE_BIGINT);
-    ASSERT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
-    ASSERT_TRUE(range2.add_range(FILTER_LESS_OR_EQUAL, 100).ok());
+    EXPECT_TRUE(range2.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
+    EXPECT_TRUE(range2.add_range(FILTER_LESS_OR_EQUAL, 100).ok());
 
-    ASSERT_TRUE(scan_keys.extend_scan_key(range2, 1024).ok());
+    EXPECT_TRUE(scan_keys.extend_scan_key(range2, 1024).ok());
 
-    std::vector<std::unique_ptr<OlapScanRange>> key_range;;
+    std::vector<std::unique_ptr<OlapScanRange>> key_range;
+    ;
 
     scan_keys.get_key_range(&key_range);
 
-    ASSERT_EQ(key_range.size(), 81);
+    EXPECT_EQ(key_range.size(), 81);
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "20");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[80]->end_scan_range), "100");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "20");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[80]->end_scan_range), "100");
 
-    ASSERT_TRUE(range2.add_range(FILTER_LESS, 50).ok());
+    EXPECT_TRUE(range2.add_range(FILTER_LESS, 50).ok());
 
-    ASSERT_TRUE(scan_keys.extend_scan_key(range2, 1024).ok());
+    EXPECT_TRUE(scan_keys.extend_scan_key(range2, 1024).ok());
 
     scan_keys.get_key_range(&key_range);
 
-    ASSERT_EQ(key_range.size(), 81);
+    EXPECT_EQ(key_range.size(), 81);
 
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "20,20");
-    ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "20,49");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "20,20");
+    EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "20,49");
 }
 
 TEST_F(OlapScanKeysTest, EachtypeTest) {
-    std::vector<std::unique_ptr<OlapScanRange>> key_range;;
+    std::vector<std::unique_ptr<OlapScanRange>> key_range;
+    ;
 
     {
         OlapScanKeys scan_keys;
         ColumnValueRange<int8_t> range("col", TYPE_TINYINT);
-        ASSERT_TRUE(scan_keys.extend_scan_key(range,1024).ok());
+        EXPECT_TRUE(scan_keys.extend_scan_key(range, 1024).ok());
         scan_keys.get_key_range(&key_range);
         // contain null, [-128, 127]
-        ASSERT_EQ(key_range.size(), 257);
-        ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "-128");
-        ASSERT_EQ(OlapScanKeys::to_print_key(key_range[256]->end_scan_range), "null");
+        EXPECT_EQ(key_range.size(), 257);
+        EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "-128");
+        EXPECT_EQ(OlapScanKeys::to_print_key(key_range[256]->end_scan_range), "null");
 
-        ASSERT_TRUE(range.add_range(FILTER_LESS, 50).ok());
+        EXPECT_TRUE(range.add_range(FILTER_LESS, 50).ok());
         scan_keys.clear();
-        ASSERT_TRUE(scan_keys.extend_scan_key(range, 1024).ok());
+        EXPECT_TRUE(scan_keys.extend_scan_key(range, 1024).ok());
         scan_keys.get_key_range(&key_range);
 
-        ASSERT_EQ(key_range.size(), 178);
-        ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "-128");
-        ASSERT_EQ(OlapScanKeys::to_print_key(key_range[177]->end_scan_range), "49");
+        EXPECT_EQ(key_range.size(), 178);
+        EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "-128");
+        EXPECT_EQ(OlapScanKeys::to_print_key(key_range[177]->end_scan_range), "49");
     }
 
     {
         OlapScanKeys scan_keys;
         ColumnValueRange<int16_t> range("col", TYPE_SMALLINT);
-        ASSERT_TRUE(scan_keys.extend_scan_key(range,1024).ok());
+        EXPECT_TRUE(scan_keys.extend_scan_key(range, 1024).ok());
         scan_keys.get_key_range(&key_range);
-        ASSERT_EQ(key_range.size(), 1);
-        ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "null");
-        ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "32767");
+        EXPECT_EQ(key_range.size(), 1);
+        EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "null");
+        EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "32767");
 
-        ASSERT_TRUE(range.add_range(FILTER_LARGER, 0).ok());
+        EXPECT_TRUE(range.add_range(FILTER_LARGER, 0).ok());
         scan_keys.clear();
-        ASSERT_TRUE(scan_keys.extend_scan_key(range,1024).ok());
+        EXPECT_TRUE(scan_keys.extend_scan_key(range, 1024).ok());
         scan_keys.get_key_range(&key_range);
 
-        ASSERT_EQ(key_range.size(), 1);
-        ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0");
-        ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "32767");
+        EXPECT_EQ(key_range.size(), 1);
+        EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0");
+        EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "32767");
 
-        ASSERT_TRUE(range.add_range(FILTER_LESS, 32766).ok());
+        EXPECT_TRUE(range.add_range(FILTER_LESS, 32766).ok());
         scan_keys.clear();
-        ASSERT_TRUE(scan_keys.extend_scan_key(range,1024).ok());
+        EXPECT_TRUE(scan_keys.extend_scan_key(range, 1024).ok());
         scan_keys.get_key_range(&key_range);
 
-        ASSERT_EQ(key_range.size(), 1);
-        ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0");
-        ASSERT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "32766");
+        EXPECT_EQ(key_range.size(), 1);
+        EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->begin_scan_range), "0");
+        EXPECT_EQ(OlapScanKeys::to_print_key(key_range[0]->end_scan_range), "32766");
     }
 }
 
@@ -657,105 +657,92 @@ TEST_F(OlapScanKeysTest, ToOlapFilterTest) {
 
     std::vector<TCondition> filters;
     range.to_olap_filter(filters);
-    ASSERT_TRUE(filters.empty());
+    EXPECT_TRUE(filters.empty());
 
     range.set_contain_null(true);
     range.to_olap_filter(filters);
-    ASSERT_EQ(std::next(filters.begin(), 0)->column_name, "col");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_op, "is");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[0], "null");
+    EXPECT_EQ(std::next(filters.begin(), 0)->column_name, "col");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_op, "is");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[0], "null");
 
     range.set_contain_null(false);
     filters.clear();
     range.to_olap_filter(filters);
-    ASSERT_EQ(std::next(filters.begin(), 0)->column_name, "col");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_op, "is");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[0], "not null");
+    EXPECT_EQ(std::next(filters.begin(), 0)->column_name, "col");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_op, "is");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[0], "not null");
 
-    ASSERT_TRUE(range.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
+    EXPECT_TRUE(range.add_range(FILTER_LARGER_OR_EQUAL, 20).ok());
     filters.clear();
     range.to_olap_filter(filters);
-    ASSERT_EQ(std::next(filters.begin(), 0)->column_name, "col");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_op, ">=");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[0], "20");
+    EXPECT_EQ(std::next(filters.begin(), 0)->column_name, "col");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_op, ">=");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[0], "20");
 
-    ASSERT_TRUE(range.add_range(FILTER_LESS, 100).ok());
+    EXPECT_TRUE(range.add_range(FILTER_LESS, 100).ok());
     filters.clear();
     range.to_olap_filter(filters);
-    ASSERT_EQ(std::next(filters.begin(), 0)->column_name, "col");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_op, ">=");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[0], "20");
+    EXPECT_EQ(std::next(filters.begin(), 0)->column_name, "col");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_op, ">=");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[0], "20");
 
-    ASSERT_EQ(std::next(filters.begin(), 1)->column_name, "col");
-    ASSERT_EQ(std::next(filters.begin(), 1)->condition_op, "<<");
-    ASSERT_EQ(std::next(filters.begin(), 1)->condition_values[0], "100");
+    EXPECT_EQ(std::next(filters.begin(), 1)->column_name, "col");
+    EXPECT_EQ(std::next(filters.begin(), 1)->condition_op, "<<");
+    EXPECT_EQ(std::next(filters.begin(), 1)->condition_values[0], "100");
 
     range.set_whole_value_range();
-    ASSERT_TRUE(range.add_range(FILTER_LESS_OR_EQUAL, 100).ok());
+    EXPECT_TRUE(range.add_range(FILTER_LESS_OR_EQUAL, 100).ok());
     filters.clear();
     range.to_olap_filter(filters);
-    ASSERT_EQ(std::next(filters.begin(), 0)->column_name, "col");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_op, "<=");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[0], "100");
+    EXPECT_EQ(std::next(filters.begin(), 0)->column_name, "col");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_op, "<=");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[0], "100");
 
-    ASSERT_TRUE(range.add_range(FILTER_LARGER, 20).ok());
+    EXPECT_TRUE(range.add_range(FILTER_LARGER, 20).ok());
     filters.clear();
     range.to_olap_filter(filters);
-    ASSERT_EQ(std::next(filters.begin(), 0)->column_name, "col");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_op, ">>");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[0], "20");
-    ASSERT_EQ(std::next(filters.begin(), 1)->column_name, "col");
-    ASSERT_EQ(std::next(filters.begin(), 1)->condition_op, "<=");
-    ASSERT_EQ(std::next(filters.begin(), 1)->condition_values[0], "100");
+    EXPECT_EQ(std::next(filters.begin(), 0)->column_name, "col");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_op, ">>");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[0], "20");
+    EXPECT_EQ(std::next(filters.begin(), 1)->column_name, "col");
+    EXPECT_EQ(std::next(filters.begin(), 1)->condition_op, "<=");
+    EXPECT_EQ(std::next(filters.begin(), 1)->condition_values[0], "100");
 
     range.set_whole_value_range();
-    ASSERT_TRUE(range.add_fixed_value(30).ok());
-    ASSERT_TRUE(range.add_fixed_value(40).ok());
-    ASSERT_TRUE(range.add_fixed_value(50).ok());
-    ASSERT_TRUE(range.add_fixed_value(20).ok());
+    EXPECT_TRUE(range.add_fixed_value(30).ok());
+    EXPECT_TRUE(range.add_fixed_value(40).ok());
+    EXPECT_TRUE(range.add_fixed_value(50).ok());
+    EXPECT_TRUE(range.add_fixed_value(20).ok());
     filters.clear();
     range.to_olap_filter(filters);
-    ASSERT_EQ(std::next(filters.begin(), 0)->column_name, "col");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_op, "*=");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[0], "20");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[1], "30");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[2], "40");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[3], "50");
-    
+    EXPECT_EQ(std::next(filters.begin(), 0)->column_name, "col");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_op, "*=");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[0], "20");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[1], "30");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[2], "40");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[3], "50");
+
     filters.clear();
     range.to_in_condition(filters, false);
-    ASSERT_EQ(std::next(filters.begin(), 0)->column_name, "col");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_op, "!*=");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[0], "20");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[1], "30");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[2], "40");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[3], "50");
-
-
-    ASSERT_TRUE(range.add_range(FILTER_LARGER, 20).ok());
+    EXPECT_EQ(std::next(filters.begin(), 0)->column_name, "col");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_op, "!*=");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[0], "20");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[1], "30");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[2], "40");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[3], "50");
+
+    EXPECT_TRUE(range.add_range(FILTER_LARGER, 20).ok());
     filters.clear();
     range.to_olap_filter(filters);
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[0], "30");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[1], "40");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[2], "50");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[0], "30");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[1], "40");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[2], "50");
 
-    ASSERT_TRUE(range.add_range(FILTER_LESS_OR_EQUAL, 40).ok());
+    EXPECT_TRUE(range.add_range(FILTER_LESS_OR_EQUAL, 40).ok());
     filters.clear();
     range.to_olap_filter(filters);
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[0], "30");
-    ASSERT_EQ(std::next(filters.begin(), 0)->condition_values[1], "40");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[0], "30");
+    EXPECT_EQ(std::next(filters.begin(), 0)->condition_values[1], "40");
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    doris::CpuInfo::init();
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/olap_scan_node_test.cpp b/be/test/exec/olap_scan_node_test.cpp
index ff613156f7..4a4a4ff3c3 100644
--- a/be/test/exec/olap_scan_node_test.cpp
+++ b/be/test/exec/olap_scan_node_test.cpp
@@ -204,33 +204,33 @@ private:
 TEST_F(OlapScanNodeTest, NormalUse) {
     OlapScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scan_node.open(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(scan_node.set_scanRanges(_scan_ranges).ok());
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(scan_node.set_scanRanges(_scan_ranges).ok());
 
     RowBatch row_batch(scan_node._row_descriptor, _runtime_stat.batch_size());
     bool eos = false;
 
     while (!eos) {
         status = scan_node.get_next(&_runtime_stat, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         int num = std::min(row_batch.num_rows(), 10);
-        ASSERT_TRUE(num > 0);
+        EXPECT_TRUE(num > 0);
 
         for (int i = 0; i < num; ++i) {
             TupleRow* row = row_batch.get_row(i);
             LOG(WARNING) << "input row: " << print_row(row, scan_node._row_descriptor);
 
             if (0 == i) {
-                ASSERT_EQ("[(-5000 -5000 -5000 1)]", print_row(row, scan_node._row_descriptor));
+                EXPECT_EQ("[(-5000 -5000 -5000 1)]", print_row(row, scan_node._row_descriptor));
             }
         }
 
         eos = true;
     }
 
-    ASSERT_TRUE(scan_node.close(&_runtime_stat).ok());
+    EXPECT_TRUE(scan_node.close(&_runtime_stat).ok());
 }
 
 TEST_F(OlapScanNodeTest, PushDownBinaryPredicate) {
@@ -264,7 +264,7 @@ TEST_F(OlapScanNodeTest, PushDownBinaryPredicate) {
     bin_pre._children.push_back(_obj_pool.add(new IntLiteral(TYPE_INT, &v)));
 
     Status status = bin_pre.prepare(&_runtime_stat, row_desc);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     std::list<Expr*> exprs;
     exprs.push_back(&bin_pre);
@@ -272,30 +272,30 @@ TEST_F(OlapScanNodeTest, PushDownBinaryPredicate) {
     scan_node.push_down_predicate(&_runtime_stat, &exprs);
 
     status = scan_node.prepare(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scan_node.open(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(scan_node.set_scan_ranges(_scan_ranges).ok());
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(scan_node.set_scan_ranges(_scan_ranges).ok());
 
     RowBatch row_batch(scan_node._row_descriptor, _runtime_stat.batch_size());
     bool eos = false;
 
     while (!eos) {
         status = scan_node.get_next(&_runtime_stat, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         int num = std::min(row_batch.num_rows(), 10);
-        ASSERT_TRUE(num > 0);
+        EXPECT_TRUE(num > 0);
 
         for (int i = 0; i < num; ++i) {
             TupleRow* row = row_batch.get_row(i);
             LOG(WARNING) << "input row: " << print_row(row, scan_node._row_descriptor);
-            ASSERT_EQ("[(-5000 -5000 -5000 1)]", print_row(row, scan_node._row_descriptor));
+            EXPECT_EQ("[(-5000 -5000 -5000 1)]", print_row(row, scan_node._row_descriptor));
         }
 
         eos = true;
     }
 
-    ASSERT_TRUE(scan_node.close(&_runtime_stat).ok());
+    EXPECT_TRUE(scan_node.close(&_runtime_stat).ok());
 }
 
 TEST_F(OlapScanNodeTest, PushDownBinaryEqualPredicate) {
@@ -329,7 +329,7 @@ TEST_F(OlapScanNodeTest, PushDownBinaryEqualPredicate) {
     bin_pre._children.push_back(_obj_pool.add(new IntLiteral(TYPE_INT, &v)));
 
     Status status = bin_pre.prepare(&_runtime_stat, row_desc);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     std::list<Expr*> exprs;
     exprs.push_back(&bin_pre);
@@ -337,30 +337,30 @@ TEST_F(OlapScanNodeTest, PushDownBinaryEqualPredicate) {
     scan_node.push_down_predicate(&_runtime_stat, &exprs);
 
     status = scan_node.prepare(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scan_node.open(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(scan_node.set_scan_ranges(_scan_ranges).ok());
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(scan_node.set_scan_ranges(_scan_ranges).ok());
 
     RowBatch row_batch(scan_node._row_descriptor, _runtime_stat.batch_size());
     bool eos = false;
 
     while (!eos) {
         status = scan_node.get_next(&_runtime_stat, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         int num = std::min(row_batch.num_rows(), 10);
-        ASSERT_TRUE(num > 0);
+        EXPECT_TRUE(num > 0);
 
         for (int i = 0; i < num; ++i) {
             TupleRow* row = row_batch.get_row(i);
             LOG(WARNING) << "input row: " << print_row(row, scan_node._row_descriptor);
-            ASSERT_EQ("[(-5000 -5000 -5000 1)]", print_row(row, scan_node._row_descriptor));
+            EXPECT_EQ("[(-5000 -5000 -5000 1)]", print_row(row, scan_node._row_descriptor));
         }
 
         eos = true;
     }
 
-    ASSERT_TRUE(scan_node.close(&_runtime_stat).ok());
+    EXPECT_TRUE(scan_node.close(&_runtime_stat).ok());
 }
 
 TEST_F(OlapScanNodeTest, PushDownInPredicateCase) {
@@ -390,7 +390,7 @@ TEST_F(OlapScanNodeTest, PushDownInPredicateCase) {
     in_pre._children.push_back(_obj_pool.add(new SlotRef(slot_node)));
 
     Status status = in_pre.prepare(&_runtime_stat, row_desc);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     for (int i = -5000; i < -4999; ++i) {
         in_pre.insert(&i);
@@ -402,42 +402,30 @@ TEST_F(OlapScanNodeTest, PushDownInPredicateCase) {
     scan_node.push_down_predicate(&_runtime_stat, &exprs);
 
     status = scan_node.prepare(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scan_node.open(&_runtime_stat);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(scan_node.set_scan_ranges(_scan_ranges).ok());
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(scan_node.set_scan_ranges(_scan_ranges).ok());
 
     RowBatch row_batch(scan_node._row_descriptor, _runtime_stat.batch_size());
     bool eos = false;
 
     while (!eos) {
         status = scan_node.get_next(&_runtime_stat, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         int num = std::min(row_batch.num_rows(), 10);
-        ASSERT_TRUE(num > 0);
+        EXPECT_TRUE(num > 0);
 
         for (int i = 0; i < num; ++i) {
             TupleRow* row = row_batch.get_row(i);
             LOG(WARNING) << "input row: " << print_row(row, scan_node._row_descriptor);
-            ASSERT_EQ("[(-5000 -5000 -5000 1)]", print_row(row, scan_node._row_descriptor));
+            EXPECT_EQ("[(-5000 -5000 -5000 1)]", print_row(row, scan_node._row_descriptor));
         }
 
         eos = true;
     }
 
-    ASSERT_TRUE(scan_node.close(&_runtime_stat).ok());
+    EXPECT_TRUE(scan_node.close(&_runtime_stat).ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    doris::CpuInfo::Init();
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/olap_scanner_test.cpp b/be/test/exec/olap_scanner_test.cpp
index 82111a31f4..1daa7a92d7 100644
--- a/be/test/exec/olap_scanner_test.cpp
+++ b/be/test/exec/olap_scanner_test.cpp
@@ -80,15 +80,3 @@ void construct_one_tuple(TupleDescriptor& tuple_desc) {
 TEST(OlapIdlUtilTest, normalcase) {}
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    doris::CpuInfo::Init();
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/orc_scanner_test.cpp b/be/test/exec/orc_scanner_test.cpp
index 4a3fe3390a..f5f99924f2 100644
--- a/be/test/exec/orc_scanner_test.cpp
+++ b/be/test/exec/orc_scanner_test.cpp
@@ -409,7 +409,7 @@ TEST_F(OrcScannerTest, normal) {
 
     ORCScanner scanner(&_runtime_state, _profile, params, ranges, _addresses, _pre_filter,
                        &_counter);
-    ASSERT_TRUE(scanner.open().ok());
+    EXPECT_TRUE(scanner.open().ok());
 
     auto tracker = std::make_shared<MemTracker>();
     MemPool tuple_pool(tracker.get());
@@ -417,18 +417,18 @@ TEST_F(OrcScannerTest, normal) {
     Tuple* tuple = (Tuple*)tuple_pool.allocate(_desc_tbl->get_tuple_descriptor(1)->byte_size());
     bool eof = false;
 
-    ASSERT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
-    ASSERT_EQ(Tuple::to_string(tuple, *_desc_tbl->get_tuple_descriptor(1)),
+    EXPECT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
+    EXPECT_EQ(Tuple::to_string(tuple, *_desc_tbl->get_tuple_descriptor(1)),
               "(0 null doris      1.567 1.567000031471252 12345 1 doris)");
-    ASSERT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
-    ASSERT_EQ(Tuple::to_string(tuple, *_desc_tbl->get_tuple_descriptor(1)),
+    EXPECT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
+    EXPECT_EQ(Tuple::to_string(tuple, *_desc_tbl->get_tuple_descriptor(1)),
               "(1 true doris      1.567 1.567000031471252 12345 1 doris)");
-    ASSERT_FALSE(eof);
+    EXPECT_FALSE(eof);
     for (int i = 2; i < 10; i++) {
-        ASSERT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
+        EXPECT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
     }
-    ASSERT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
+    EXPECT_TRUE(eof);
     scanner.close();
 }
 
@@ -533,17 +533,17 @@ TEST_F(OrcScannerTest, normal2) {
 
     ORCScanner scanner(&_runtime_state, _profile, params, ranges, _addresses, _pre_filter,
                        &_counter);
-    ASSERT_TRUE(scanner.open().ok());
+    EXPECT_TRUE(scanner.open().ok());
 
     auto tracker = std::make_shared<MemTracker>();
     MemPool tuple_pool(tracker.get());
 
     Tuple* tuple = (Tuple*)tuple_pool.allocate(_desc_tbl->get_tuple_descriptor(1)->byte_size());
     bool eof = false;
-    ASSERT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
-    ASSERT_EQ(Tuple::to_string(tuple, *_desc_tbl->get_tuple_descriptor(1)), "(null)");
-    ASSERT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
-    ASSERT_EQ(Tuple::to_string(tuple, *_desc_tbl->get_tuple_descriptor(1)), "(true)");
+    EXPECT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
+    EXPECT_EQ(Tuple::to_string(tuple, *_desc_tbl->get_tuple_descriptor(1)), "(null)");
+    EXPECT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
+    EXPECT_EQ(Tuple::to_string(tuple, *_desc_tbl->get_tuple_descriptor(1)), "(true)");
     scanner.close();
 }
 
@@ -883,23 +883,18 @@ TEST_F(OrcScannerTest, normal3) {
 
     ORCScanner scanner(&_runtime_state, _profile, params, ranges, _addresses, _pre_filter,
                        &_counter);
-    ASSERT_TRUE(scanner.open().ok());
+    EXPECT_TRUE(scanner.open().ok());
 
     auto tracker = std::make_shared<MemTracker>();
     MemPool tuple_pool(tracker.get());
 
     Tuple* tuple = (Tuple*)tuple_pool.allocate(_desc_tbl->get_tuple_descriptor(1)->byte_size());
     bool eof = false;
-    ASSERT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
-    ASSERT_EQ(Tuple::to_string(tuple, *_desc_tbl->get_tuple_descriptor(1)),
+    EXPECT_TRUE(scanner.get_next(tuple, &tuple_pool, &eof, &_fill_tuple).ok());
+    EXPECT_EQ(Tuple::to_string(tuple, *_desc_tbl->get_tuple_descriptor(1)),
               "(0.123456789 1.12 -1.12345 0.12345 0 1 2020-01-14 14:12:19 2020-02-10 "
               "-0.0014)");
     scanner.close();
 }
 
 } // end namespace doris
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    doris::CpuInfo::init();
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/parquet_scanner_test.cpp b/be/test/exec/parquet_scanner_test.cpp
index 2e5eeded8f..3e493f6344 100644
--- a/be/test/exec/parquet_scanner_test.cpp
+++ b/be/test/exec/parquet_scanner_test.cpp
@@ -96,7 +96,7 @@ int ParquetScannerTest::create_src_tuple(TDescriptorTable& t_desc_table, int nex
         slot_desc.slotType = type;
         slot_desc.columnPos = i;
         // Skip the first 8 bytes These 8 bytes are used to indicate whether the field is a null value
-        slot_desc.byteOffset = i * 16 + 8; 
+        slot_desc.byteOffset = i * 16 + 8;
         slot_desc.nullIndicatorByte = i / 8;
         slot_desc.nullIndicatorBit = i % 8;
         slot_desc.colName = columnNames[i];
@@ -111,7 +111,7 @@ int ParquetScannerTest::create_src_tuple(TDescriptorTable& t_desc_table, int nex
         TTupleDescriptor t_tuple_desc;
         t_tuple_desc.id = TUPLE_ID_SRC;
         //Here 8 bytes in order to handle null values
-        t_tuple_desc.byteSize = COLUMN_NUMBERS * 16 + 8; 
+        t_tuple_desc.byteSize = COLUMN_NUMBERS * 16 + 8;
         t_tuple_desc.numNullBytes = 0;
         t_tuple_desc.tableId = 0;
         t_tuple_desc.__isset.tableId = true;
@@ -121,8 +121,9 @@ int ParquetScannerTest::create_src_tuple(TDescriptorTable& t_desc_table, int nex
 }
 
 int ParquetScannerTest::create_dst_tuple(TDescriptorTable& t_desc_table, int next_slot_id) {
-    int32_t byteOffset = 8; // Skip the first 8 bytes These 8 bytes are used to indicate whether the field is a null value
-    {                       //log_version
+    int32_t byteOffset =
+            8; // Skip the first 8 bytes These 8 bytes are used to indicate whether the field is a null value
+    {          //log_version
         TSlotDescriptor slot_desc;
 
         slot_desc.id = next_slot_id++;
@@ -425,7 +426,7 @@ TEST_F(ParquetScannerTest, normal) {
     BrokerScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     scan_node.init(_tnode);
     auto status = scan_node.prepare(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     // set scan range
     std::vector<TScanRangeParams> scan_ranges;
@@ -440,7 +441,7 @@ TEST_F(ParquetScannerTest, normal) {
         range.format_type = TFileFormatType::FORMAT_PARQUET;
         range.splittable = true;
 
-        std::vector<std::string> columns_from_path{"value"};
+        std::vector<std::string> columns_from_path {"value"};
         range.__set_columns_from_path(columns_from_path);
         range.__set_num_of_columns_from_file(19);
 #if 1
@@ -461,7 +462,7 @@ TEST_F(ParquetScannerTest, normal) {
 
     scan_node.set_scan_ranges(scan_ranges);
     status = scan_node.open(&_runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 
     auto tracker = std::make_shared<MemTracker>();
     // Get batch
@@ -469,21 +470,21 @@ TEST_F(ParquetScannerTest, normal) {
     bool eof = false;
     for (int i = 0; i < 14; i++) {
         status = scan_node.get_next(&_runtime_state, &batch, &eof);
-        ASSERT_TRUE(status.ok());
-        ASSERT_EQ(2048, batch.num_rows());
-        ASSERT_FALSE(eof);
+        EXPECT_TRUE(status.ok());
+        EXPECT_EQ(2048, batch.num_rows());
+        EXPECT_FALSE(eof);
         batch.reset();
     }
 
     status = scan_node.get_next(&_runtime_state, &batch, &eof);
-    ASSERT_TRUE(status.ok());
-    ASSERT_EQ(1328, batch.num_rows());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(status.ok());
+    EXPECT_EQ(1328, batch.num_rows());
+    EXPECT_FALSE(eof);
     batch.reset();
     status = scan_node.get_next(&_runtime_state, &batch, &eof);
-    ASSERT_TRUE(status.ok());
-    ASSERT_EQ(0, batch.num_rows());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(status.ok());
+    EXPECT_EQ(0, batch.num_rows());
+    EXPECT_TRUE(eof);
 
     scan_node.close(&_runtime_state);
     {
@@ -494,9 +495,3 @@ TEST_F(ParquetScannerTest, normal) {
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    doris::CpuInfo::init();
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/plain_text_line_reader_bzip_test.cpp b/be/test/exec/plain_text_line_reader_bzip_test.cpp
index 8a2868a2fe..747313c803 100644
--- a/be/test/exec/plain_text_line_reader_bzip_test.cpp
+++ b/be/test/exec/plain_text_line_reader_bzip_test.cpp
@@ -40,11 +40,11 @@ TEST_F(PlainTextLineReaderTest, bzip2_normal_use) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/test_file.csv.bz2",
                                 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::BZIP2, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, -1, "\n", 1);
     const uint8_t* ptr;
@@ -53,170 +53,170 @@ TEST_F(PlainTextLineReaderTest, bzip2_normal_use) {
 
     // 1,2
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(3, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(3, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(0, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(0, size);
+    EXPECT_FALSE(eof);
 
     // 1,2,3,4
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(7, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(7, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
     delete decompressor;
 }
 
 TEST_F(PlainTextLineReaderTest, bzip2_test_limit) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.bz2", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::BZIP2, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 8, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
     delete decompressor;
 }
 
 TEST_F(PlainTextLineReaderTest, bzip2_test_limit2) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.bz2", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::BZIP2, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 6, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     delete decompressor;
 }
 
 TEST_F(PlainTextLineReaderTest, bzip2_test_limit3) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.bz2", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::BZIP2, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 7, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     delete decompressor;
 }
 
 TEST_F(PlainTextLineReaderTest, bzip2_test_limit4) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.bz2", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::BZIP2, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 7, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     delete decompressor;
 }
 
 TEST_F(PlainTextLineReaderTest, bzip2_test_limit5) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.bz2", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::BZIP2, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 0, "\n", 1);
     const uint8_t* ptr;
@@ -225,19 +225,8 @@ TEST_F(PlainTextLineReaderTest, bzip2_test_limit5) {
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     delete decompressor;
 }
 
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    // std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    // if (!doris::config::init(conffile.c_str(), false)) {
-    //     fprintf(stderr, "error read config file. \n");
-    //     return -1;
-    // }
-    // doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/plain_text_line_reader_gzip_test.cpp b/be/test/exec/plain_text_line_reader_gzip_test.cpp
index 2f6d190b49..1e461e8b82 100644
--- a/be/test/exec/plain_text_line_reader_gzip_test.cpp
+++ b/be/test/exec/plain_text_line_reader_gzip_test.cpp
@@ -24,9 +24,9 @@
 
 namespace doris {
 
-class PlainTextLineReaderTest : public testing::Test {
+class PlainTextLineReaderGzipTest : public testing::Test {
 public:
-    PlainTextLineReaderTest() : _profile("TestProfile") {}
+    PlainTextLineReaderGzipTest() : _profile("TestProfile") {}
 
 protected:
     virtual void SetUp() {}
@@ -36,15 +36,15 @@ private:
     RuntimeProfile _profile;
 };
 
-TEST_F(PlainTextLineReaderTest, gzip_normal_use) {
+TEST_F(PlainTextLineReaderGzipTest, gzip_normal_use) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/test_file.csv.gz",
                                 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::GZIP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, -1, "\n", 1);
     const uint8_t* ptr;
@@ -53,50 +53,50 @@ TEST_F(PlainTextLineReaderTest, gzip_normal_use) {
 
     // 1,2
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(3, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(3, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(0, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(0, size);
+    EXPECT_FALSE(eof);
 
     // 1,2,3,4
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(7, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(7, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
     delete decompressor;
 }
 
-TEST_F(PlainTextLineReaderTest, uncompressed_no_newline) {
+TEST_F(PlainTextLineReaderGzipTest, uncompressed_no_newline) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/no_newline.csv.gz",
                                 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::GZIP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, -1, "\n", 1);
     const uint8_t* ptr;
@@ -105,154 +105,154 @@ TEST_F(PlainTextLineReaderTest, uncompressed_no_newline) {
 
     // 1,2,3
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
-    ASSERT_STREQ("1,2,3", std::string((char*)ptr, size).c_str());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
+    EXPECT_STREQ("1,2,3", std::string((char*)ptr, size).c_str());
+    EXPECT_FALSE(eof);
 
     // 4,5
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(3, size);
-    ASSERT_STREQ("4,5", std::string((char*)ptr, size).c_str());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(3, size);
+    EXPECT_STREQ("4,5", std::string((char*)ptr, size).c_str());
+    EXPECT_FALSE(eof);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
     delete decompressor;
 }
 
-TEST_F(PlainTextLineReaderTest, gzip_test_limit) {
+TEST_F(PlainTextLineReaderGzipTest, gzip_test_limit) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.gz", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::GZIP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 8, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     delete decompressor;
 }
 
-TEST_F(PlainTextLineReaderTest, gzip_test_limit2) {
+TEST_F(PlainTextLineReaderGzipTest, gzip_test_limit2) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.gz", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::GZIP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 6, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
     delete decompressor;
 }
 
-TEST_F(PlainTextLineReaderTest, gzip_test_limit3) {
+TEST_F(PlainTextLineReaderGzipTest, gzip_test_limit3) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.gz", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::GZIP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 7, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     delete decompressor;
 }
 
-TEST_F(PlainTextLineReaderTest, gzip_test_limit4) {
+TEST_F(PlainTextLineReaderGzipTest, gzip_test_limit4) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.gz", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::GZIP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 7, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     delete decompressor;
 }
 
-TEST_F(PlainTextLineReaderTest, gzip_test_limit5) {
+TEST_F(PlainTextLineReaderGzipTest, gzip_test_limit5) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.gz", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::GZIP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 0, "\n", 1);
     const uint8_t* ptr;
@@ -261,19 +261,8 @@ TEST_F(PlainTextLineReaderTest, gzip_test_limit5) {
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     delete decompressor;
 }
 
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    // std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    // if (!doris::config::init(conffile.c_str(), false)) {
-    //     fprintf(stderr, "error read config file. \n");
-    //     return -1;
-    // }
-    // doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/plain_text_line_reader_lz4frame_test.cpp b/be/test/exec/plain_text_line_reader_lz4frame_test.cpp
index f78d7366da..0ebd218b28 100644
--- a/be/test/exec/plain_text_line_reader_lz4frame_test.cpp
+++ b/be/test/exec/plain_text_line_reader_lz4frame_test.cpp
@@ -40,11 +40,11 @@ TEST_F(PlainTextLineReaderTest, lz4_normal_use) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/test_file.csv.lz4",
                                 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::LZ4FRAME, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, -1, "\n", 1);
     const uint8_t* ptr;
@@ -53,170 +53,170 @@ TEST_F(PlainTextLineReaderTest, lz4_normal_use) {
 
     // 1,2
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(3, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(3, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(0, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(0, size);
+    EXPECT_FALSE(eof);
 
     // 1,2,3,4
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(7, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(7, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
     delete decompressor;
 }
 
 TEST_F(PlainTextLineReaderTest, lz4_test_limit) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.lz4", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::LZ4FRAME, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 8, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
     delete decompressor;
 }
 
 TEST_F(PlainTextLineReaderTest, lz4_test_limit2) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.lz4", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::LZ4FRAME, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 6, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     delete decompressor;
 }
 
 TEST_F(PlainTextLineReaderTest, lz4_test_limit3) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.lz4", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::LZ4FRAME, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 7, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     delete decompressor;
 }
 
 TEST_F(PlainTextLineReaderTest, lz4_test_limit4) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.lz4", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::LZ4FRAME, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 7, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     delete decompressor;
 }
 
 TEST_F(PlainTextLineReaderTest, lz4_test_limit5) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.lz4", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::LZ4FRAME, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 0, "\n", 1);
     const uint8_t* ptr;
@@ -225,19 +225,8 @@ TEST_F(PlainTextLineReaderTest, lz4_test_limit5) {
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     delete decompressor;
 }
 
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    // std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    // if (!doris::config::init(conffile.c_str(), false)) {
-    //     fprintf(stderr, "error read config file. \n");
-    //     return -1;
-    // }
-    // doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/plain_text_line_reader_lzop_test.cpp b/be/test/exec/plain_text_line_reader_lzop_test.cpp
index 5f83afc399..f8f8b6090d 100644
--- a/be/test/exec/plain_text_line_reader_lzop_test.cpp
+++ b/be/test/exec/plain_text_line_reader_lzop_test.cpp
@@ -40,11 +40,11 @@ TEST_F(PlainTextLineReaderTest, lzop_normal_use) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/test_file.csv.lzo",
                                 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::LZOP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, -1, "\n", 1);
     const uint8_t* ptr;
@@ -53,165 +53,165 @@ TEST_F(PlainTextLineReaderTest, lzop_normal_use) {
 
     // 1,2
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(3, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(3, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(0, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(0, size);
+    EXPECT_FALSE(eof);
 
     // 1,2,3,4
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(7, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(7, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
 TEST_F(PlainTextLineReaderTest, lzop_test_limit) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.lzo", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::LZOP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 8, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
 }
 
 TEST_F(PlainTextLineReaderTest, lzop_test_limit2) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.lzo", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::LZOP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 6, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 }
 
 TEST_F(PlainTextLineReaderTest, lzop_test_limit3) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.lzo", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::LZOP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 7, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 }
 
 TEST_F(PlainTextLineReaderTest, lzop_test_limit4) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.lzo", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::LZOP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 7, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 }
 
 TEST_F(PlainTextLineReaderTest, lzop_test_limit5) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv.lzo", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::LZOP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 0, "\n", 1);
     const uint8_t* ptr;
@@ -220,18 +220,18 @@ TEST_F(PlainTextLineReaderTest, lzop_test_limit5) {
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 }
 
 TEST_F(PlainTextLineReaderTest, lzop_test_larger) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/larger.txt.lzo",
                                 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::LZOP, &decompressor);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, -1, "\n", 1);
     const uint8_t* ptr;
@@ -240,62 +240,51 @@ TEST_F(PlainTextLineReaderTest, lzop_test_larger) {
 
     // 1
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(20, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(20, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // 2
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(30, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(30, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // 3
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(9, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(9, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // 4
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(0, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(0, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // 5
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(30, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(30, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // 6
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(0, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(0, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // 7
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(0, size);
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(0, size);
+    EXPECT_TRUE(eof);
 }
 
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    // std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    // if (!doris::config::init(conffile.c_str(), false)) {
-    //     fprintf(stderr, "error read config file. \n");
-    //     return -1;
-    // }
-    // doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/plain_text_line_reader_uncompressed_test.cpp b/be/test/exec/plain_text_line_reader_uncompressed_test.cpp
index 6568b4fbd8..b9361999b4 100644
--- a/be/test/exec/plain_text_line_reader_uncompressed_test.cpp
+++ b/be/test/exec/plain_text_line_reader_uncompressed_test.cpp
@@ -24,9 +24,9 @@
 
 namespace doris {
 
-class PlainTextLineReaderTest : public testing::Test {
+class PlainTextLineReaderUncompressedTest : public testing::Test {
 public:
-    PlainTextLineReaderTest() : _profile("TestProfile") {}
+    PlainTextLineReaderUncompressedTest() : _profile("TestProfile") {}
 
 protected:
     virtual void SetUp() {}
@@ -36,15 +36,15 @@ private:
     RuntimeProfile _profile;
 };
 
-TEST_F(PlainTextLineReaderTest, uncompressed_normal_use) {
+TEST_F(PlainTextLineReaderUncompressedTest, uncompressed_normal_use) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/test_file.csv", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::UNCOMPRESSED, &decompressor);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(decompressor == nullptr);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(decompressor == nullptr);
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, -1, "\n", 1);
     const uint8_t* ptr;
@@ -53,50 +53,50 @@ TEST_F(PlainTextLineReaderTest, uncompressed_normal_use) {
 
     // 1,2
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(3, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(3, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(0, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(0, size);
+    EXPECT_FALSE(eof);
 
     // 1,2,3,4
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(7, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(7, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
-TEST_F(PlainTextLineReaderTest, uncompressed_no_newline) {
+TEST_F(PlainTextLineReaderUncompressedTest, uncompressed_no_newline) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/no_newline.csv",
                                 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::UNCOMPRESSED, &decompressor);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(decompressor == nullptr);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(decompressor == nullptr);
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, -1, "\n", 1);
     const uint8_t* ptr;
@@ -105,158 +105,158 @@ TEST_F(PlainTextLineReaderTest, uncompressed_no_newline) {
 
     // 1,2,3
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
-    ASSERT_STREQ("1,2,3", std::string((char*)ptr, size).c_str());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
+    EXPECT_STREQ("1,2,3", std::string((char*)ptr, size).c_str());
+    EXPECT_FALSE(eof);
 
     // 4,5
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(3, size);
-    ASSERT_STREQ("4,5", std::string((char*)ptr, size).c_str());
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(3, size);
+    EXPECT_STREQ("4,5", std::string((char*)ptr, size).c_str());
+    EXPECT_FALSE(eof);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
-TEST_F(PlainTextLineReaderTest, uncompressed_test_limit) {
+TEST_F(PlainTextLineReaderUncompressedTest, uncompressed_test_limit) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::UNCOMPRESSED, &decompressor);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(decompressor == nullptr);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(decompressor == nullptr);
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 8, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
+    EXPECT_FALSE(eof);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
-TEST_F(PlainTextLineReaderTest, uncompressed_test_limit2) {
+TEST_F(PlainTextLineReaderUncompressedTest, uncompressed_test_limit2) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::UNCOMPRESSED, &decompressor);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(decompressor == nullptr);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(decompressor == nullptr);
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 6, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
-TEST_F(PlainTextLineReaderTest, uncompressed_test_limit3) {
+TEST_F(PlainTextLineReaderUncompressedTest, uncompressed_test_limit3) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::UNCOMPRESSED, &decompressor);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(decompressor == nullptr);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(decompressor == nullptr);
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 7, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
-TEST_F(PlainTextLineReaderTest, uncompressed_test_limit4) {
+TEST_F(PlainTextLineReaderUncompressedTest, uncompressed_test_limit4) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::UNCOMPRESSED, &decompressor);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(decompressor == nullptr);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(decompressor == nullptr);
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 7, "\n", 1);
     const uint8_t* ptr;
     size_t size;
     bool eof;
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(5, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(5, size);
     LOG(INFO) << std::string((const char*)ptr, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_FALSE(eof);
-    ASSERT_EQ(0, size);
+    EXPECT_TRUE(st.ok());
+    EXPECT_FALSE(eof);
+    EXPECT_EQ(0, size);
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
-TEST_F(PlainTextLineReaderTest, uncompressed_test_limit5) {
+TEST_F(PlainTextLineReaderUncompressedTest, uncompressed_test_limit5) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/limit.csv", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::UNCOMPRESSED, &decompressor);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(decompressor == nullptr);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(decompressor == nullptr);
 
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 0, "\n", 1);
     const uint8_t* ptr;
@@ -265,19 +265,19 @@ TEST_F(PlainTextLineReaderTest, uncompressed_test_limit5) {
 
     // Empty
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
-TEST_F(PlainTextLineReaderTest, uncompressed_test_empty) {
+TEST_F(PlainTextLineReaderUncompressedTest, uncompressed_test_empty) {
     LocalFileReader file_reader("./be/test/exec/test_data/plain_text_line_reader/empty.txt", 0);
     auto st = file_reader.open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     Decompressor* decompressor;
     st = Decompressor::create_decompressor(CompressType::UNCOMPRESSED, &decompressor);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(decompressor == nullptr);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(decompressor == nullptr);
 
     // set min length larger than 0 to test
     PlainTextLineReader line_reader(&_profile, &file_reader, decompressor, 10, "\n", 1);
@@ -286,19 +286,8 @@ TEST_F(PlainTextLineReaderTest, uncompressed_test_empty) {
     bool eof;
 
     st = line_reader.read_line(&ptr, &size, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_TRUE(eof);
 }
 
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    // std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    // if (!doris::config::init(conffile.c_str(), false)) {
-    //     fprintf(stderr, "error read config file. \n");
-    //     return -1;
-    // }
-    // doris::init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/s3_reader_test.cpp b/be/test/exec/s3_reader_test.cpp
index a750f7b319..3c11a19180 100644
--- a/be/test/exec/s3_reader_test.cpp
+++ b/be/test/exec/s3_reader_test.cpp
@@ -36,6 +36,9 @@ static const std::string SK = "";
 static const std::string ENDPOINT = "http://s3.bj.bcebos.com";
 static const std::string REGION = "bj";
 static const std::string BUCKET = "s3://yang-repo/";
+
+// remove DISABLED_ when need run this test
+#define S3ReaderTest DISABLED_S3ReaderTest
 class S3ReaderTest : public testing::Test {
 public:
     S3ReaderTest()
@@ -76,49 +79,41 @@ TEST_F(S3ReaderTest, normal) {
     std::string path = _s3_base_path + "/test_file";
     std::unique_ptr<S3Writer> writer(new S3Writer(_aws_properties, path, 0));
     auto st = writer->open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     size_t l = 0;
     st = writer->write(reinterpret_cast<const uint8_t*>(_content.c_str()), _content.length(), &l);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(_content.length(), l);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(_content.length(), l);
     st = writer->close();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     std::unique_ptr<S3Writer> writer1(new S3Writer(_aws_properties, path, 0));
     st = writer1->open();
-    ASSERT_TRUE(st.is_already_exist());
+    EXPECT_TRUE(st.is_already_exist());
     std::unique_ptr<S3Reader> reader(new S3Reader(_aws_properties, path, 0));
     st = reader->open();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     std::unique_ptr<S3Reader> reader1(new S3Reader(_aws_properties, path + "xx", 0));
     st = reader1->open();
-    ASSERT_TRUE(st.is_not_found());
-    ASSERT_EQ(_content.length(), reader->size());
+    EXPECT_TRUE(st.is_not_found());
+    EXPECT_EQ(_content.length(), reader->size());
     std::string verification_contents;
     verification_contents.resize(_content.length());
     int64_t total_read = 0;
     bool eof = false;
     st = reader->read((uint8_t*)&verification_contents[0], _content.length(), &total_read, &eof);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(_content, verification_contents);
-    ASSERT_EQ(_content.length(), total_read);
-    ASSERT_FALSE(eof);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(_content, verification_contents);
+    EXPECT_EQ(_content.length(), total_read);
+    EXPECT_FALSE(eof);
     st = reader->read((uint8_t*)&verification_contents[0], _content.length(), &total_read, &eof);
-    ASSERT_TRUE(eof);
+    EXPECT_TRUE(eof);
     int64_t t = 0;
     st = reader->tell(&t);
-    ASSERT_TRUE(st.ok());
-    ASSERT_EQ(_content.length(), t);
+    EXPECT_TRUE(st.ok());
+    EXPECT_EQ(_content.length(), t);
     st = reader->readat(_content.length(), _content.length(), (int64_t*)(&total_read),
                         (uint8_t*)&verification_contents[0]);
     LOG(INFO) << total_read;
-    ASSERT_TRUE(total_read == 0);
+    EXPECT_TRUE(total_read == 0);
 }
 } // end namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    int ret = 0;
-    // ak sk is secret
-    // ret = RUN_ALL_TESTS();
-    return ret;
-}
diff --git a/be/test/exec/schema_scan_node_test.cpp b/be/test/exec/schema_scan_node_test.cpp
index 25c49d9d17..3027c7787c 100644
--- a/be/test/exec/schema_scan_node_test.cpp
+++ b/be/test/exec/schema_scan_node_test.cpp
@@ -112,24 +112,24 @@ private:
 TEST_F(SchemaScanNodeTest, normal_use) {
     SchemaScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(&runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scan_node.prepare(&runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     std::vector<TScanRangeParams> scan_ranges;
     status = scan_node.set_scan_ranges(scan_ranges);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     std::stringstream out;
     scan_node.debug_string(1, &out);
     LOG(WARNING) << out.str();
 
     status = scan_node.open(&runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     RowBatch row_batch(scan_node._row_descriptor, 100);
     bool eos = false;
 
     while (!eos) {
         status = scan_node.get_next(&runtime_state, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
 
         if (!eos) {
             for (int i = 0; i < row_batch.num_rows(); ++i) {
@@ -140,21 +140,21 @@ TEST_F(SchemaScanNodeTest, normal_use) {
     }
 
     status = scan_node.close(&runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 }
 TEST_F(SchemaScanNodeTest, Prepare_fail_1) {
     SchemaScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     TableDescriptor* old = _desc_tbl->_tuple_desc_map[(TupleId)0]->_table_desc;
     _desc_tbl->_tuple_desc_map[(TupleId)0]->_table_desc = nullptr;
     Status status = scan_node.prepare(&runtime_state);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     _desc_tbl->_tuple_desc_map[(TupleId)0]->_table_desc = old;
 }
 TEST_F(SchemaScanNodeTest, Prepare_fail_2) {
     SchemaScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     scan_node._tuple_id = 1;
     Status status = scan_node.prepare(&runtime_state);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaScanNodeTest, dummy) {
     SchemaTableDescriptor* t_desc =
@@ -162,24 +162,24 @@ TEST_F(SchemaScanNodeTest, dummy) {
     t_desc->_schema_table_type = TSchemaTableType::SCH_EVENTS;
     SchemaScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(&runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scan_node.prepare(&runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     std::vector<TScanRangeParams> scan_ranges;
     status = scan_node.set_scan_ranges(scan_ranges);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     std::stringstream out;
     scan_node.debug_string(1, &out);
     LOG(WARNING) << out.str();
 
     status = scan_node.open(&runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     RowBatch row_batch(scan_node._row_descriptor, 100);
     bool eos = false;
 
     while (!eos) {
         status = scan_node.get_next(&runtime_state, &row_batch, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
 
         if (!eos) {
             for (int i = 0; i < row_batch.num_rows(); ++i) {
@@ -190,52 +190,41 @@ TEST_F(SchemaScanNodeTest, dummy) {
     }
 
     status = scan_node.close(&runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     t_desc->_schema_table_type = TSchemaTableType::SCH_AUTHORS;
 }
 TEST_F(SchemaScanNodeTest, get_dest_desc_fail) {
     SchemaScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     scan_node._tuple_id = 1;
     Status status = scan_node.prepare(&runtime_state);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaScanNodeTest, invalid_param) {
     SchemaScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     Status status = scan_node.prepare(nullptr);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scan_node.prepare(&runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scan_node.open(nullptr);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scan_node.open(&runtime_state);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     RowBatch row_batch(scan_node._row_descriptor, 100);
     bool eos;
     status = scan_node.get_next(nullptr, &row_batch, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(SchemaScanNodeTest, no_init) {
     SchemaScanNode scan_node(&_obj_pool, _tnode, *_desc_tbl);
     //Status status = scan_node.prepare(&runtime_state);
-    //ASSERT_TRUE(status.ok());
+    //EXPECT_TRUE(status.ok());
     Status status = scan_node.open(&runtime_state);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     RowBatch row_batch(scan_node._row_descriptor, 100);
     bool eos;
     status = scan_node.get_next(&runtime_state, &row_batch, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/schema_scanner/schema_authors_scanner_test.cpp b/be/test/exec/schema_scanner/schema_authors_scanner_test.cpp
index 91d761845d..298d4439f2 100644
--- a/be/test/exec/schema_scanner/schema_authors_scanner_test.cpp
+++ b/be/test/exec/schema_scanner/schema_authors_scanner_test.cpp
@@ -50,16 +50,16 @@ char g_tuple_buf[10000]; // enough for tuple
 TEST_F(SchemaAuthorScannerTest, normal_use) {
     SchemaAuthorsScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     while (!eos) {
         status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         for (int i = 0; i < 3; ++i) {
             LOG(INFO)
                     << ((StringValue*)tuple->get_slot(tuple_desc->slots()[i]->tuple_offset()))->ptr;
@@ -70,40 +70,29 @@ TEST_F(SchemaAuthorScannerTest, normal_use) {
 TEST_F(SchemaAuthorScannerTest, use_with_no_init) {
     SchemaAuthorsScanner scanner;
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr == tuple_desc);
+    EXPECT_TRUE(nullptr == tuple_desc);
     Status status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(SchemaAuthorScannerTest, invalid_param) {
     SchemaAuthorsScanner scanner;
     Status status = scanner.init(&_param, nullptr);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, nullptr, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/schema_scanner/schema_charsets_scanner_test.cpp b/be/test/exec/schema_scanner/schema_charsets_scanner_test.cpp
index eb2cae61d6..83b77f5007 100644
--- a/be/test/exec/schema_scanner/schema_charsets_scanner_test.cpp
+++ b/be/test/exec/schema_scanner/schema_charsets_scanner_test.cpp
@@ -51,16 +51,16 @@ char g_tuple_buf[10000]; // enough for tuple
 TEST_F(SchemaCharsetsScannerTest, normal_use) {
     SchemaCharsetsScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     while (!eos) {
         status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         if (!eos) {
             LOG(INFO) << print_tuple(tuple, *tuple_desc);
         }
@@ -70,40 +70,29 @@ TEST_F(SchemaCharsetsScannerTest, normal_use) {
 TEST_F(SchemaCharsetsScannerTest, use_with_no_init) {
     SchemaCharsetsScanner scanner;
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr == tuple_desc);
+    EXPECT_TRUE(nullptr == tuple_desc);
     Status status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(SchemaCharsetsScannerTest, invalid_param) {
     SchemaCharsetsScanner scanner;
     Status status = scanner.init(&_param, nullptr);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, nullptr, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/schema_scanner/schema_collations_scanner_test.cpp b/be/test/exec/schema_scanner/schema_collations_scanner_test.cpp
index 9f7a523a0c..e215ed3c0c 100644
--- a/be/test/exec/schema_scanner/schema_collations_scanner_test.cpp
+++ b/be/test/exec/schema_scanner/schema_collations_scanner_test.cpp
@@ -51,16 +51,16 @@ char g_tuple_buf[10000]; // enough for tuple
 TEST_F(SchemaCollationsScannerTest, normal_use) {
     SchemaCollationsScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     while (!eos) {
         status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         if (!eos) {
             LOG(INFO) << print_tuple(tuple, *tuple_desc);
         }
@@ -70,40 +70,29 @@ TEST_F(SchemaCollationsScannerTest, normal_use) {
 TEST_F(SchemaCollationsScannerTest, use_with_no_init) {
     SchemaCollationsScanner scanner;
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr == tuple_desc);
+    EXPECT_TRUE(nullptr == tuple_desc);
     Status status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(SchemaCollationsScannerTest, invalid_param) {
     SchemaCollationsScanner scanner;
     Status status = scanner.init(&_param, nullptr);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, nullptr, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/schema_scanner/schema_columns_scanner_test.cpp b/be/test/exec/schema_scanner/schema_columns_scanner_test.cpp
index 3da4075903..d2d6c632b6 100644
--- a/be/test/exec/schema_scanner/schema_columns_scanner_test.cpp
+++ b/be/test/exec/schema_scanner/schema_columns_scanner_test.cpp
@@ -96,16 +96,16 @@ char g_tuple_buf[10000]; // enough for tuple
 TEST_F(SchemaColumnsScannerTest, normal_use) {
     SchemaColumnsScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(eos);
 }
 TEST_F(SchemaColumnsScannerTest, one_column) {
     table_num = 1;
@@ -113,19 +113,19 @@ TEST_F(SchemaColumnsScannerTest, one_column) {
     desc_num = 1;
     SchemaColumnsScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_FALSE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_FALSE(eos);
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(eos);
 }
 TEST_F(SchemaColumnsScannerTest, op_before_init) {
     table_num = 1;
@@ -133,11 +133,11 @@ TEST_F(SchemaColumnsScannerTest, op_before_init) {
     desc_num = 1;
     SchemaColumnsScanner scanner;
     Status status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaColumnsScannerTest, input_fail) {
     table_num = 1;
@@ -145,14 +145,14 @@ TEST_F(SchemaColumnsScannerTest, input_fail) {
     desc_num = 1;
     SchemaColumnsScanner scanner;
     Status status = scanner.init(nullptr, &_obj_pool);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     bool eos = false;
     status = scanner.get_next_row(nullptr, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaColumnsScannerTest, table_fail) {
     table_num = 1;
@@ -160,16 +160,16 @@ TEST_F(SchemaColumnsScannerTest, table_fail) {
     desc_num = 1;
     SchemaColumnsScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     s_table_result = Status::InternalError("get table failed");
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaColumnsScannerTest, desc_fail) {
     table_num = 1;
@@ -177,16 +177,16 @@ TEST_F(SchemaColumnsScannerTest, desc_fail) {
     desc_num = 1;
     SchemaColumnsScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     s_desc_result = Status::InternalError("get desc failed");
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(SchemaColumnsScannerTest, start_fail) {
@@ -195,21 +195,10 @@ TEST_F(SchemaColumnsScannerTest, start_fail) {
     desc_num = 1;
     SchemaColumnsScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     s_db_result = Status::InternalError("get db failed.");
     status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/schema_scanner/schema_create_table_scanner_test.cpp b/be/test/exec/schema_scanner/schema_create_table_scanner_test.cpp
index 8520b81262..80ae9ec4f1 100644
--- a/be/test/exec/schema_scanner/schema_create_table_scanner_test.cpp
+++ b/be/test/exec/schema_scanner/schema_create_table_scanner_test.cpp
@@ -96,16 +96,16 @@ char g_tuple_buf[10000]; // enough for tuple
 TEST_F(SchemaCreateTableScannerTest, normal_use) {
     SchemaCreateTableScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(eos);
 }
 TEST_F(SchemaCreateTableScannerTest, one_column) {
     table_num = 1;
@@ -113,19 +113,19 @@ TEST_F(SchemaCreateTableScannerTest, one_column) {
     desc_num = 1;
     SchemaCreateTableScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_FALSE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_FALSE(eos);
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(eos);
 }
 TEST_F(SchemaCreateTableScannerTest, op_before_init) {
     table_num = 1;
@@ -133,11 +133,11 @@ TEST_F(SchemaCreateTableScannerTest, op_before_init) {
     desc_num = 1;
     SchemaCreateTableScanner scanner;
     Status status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaCreateTableScannerTest, input_fail) {
     table_num = 1;
@@ -145,14 +145,14 @@ TEST_F(SchemaCreateTableScannerTest, input_fail) {
     desc_num = 1;
     SchemaCreateTableScanner scanner;
     Status status = scanner.init(nullptr, &_obj_pool);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     bool eos = false;
     status = scanner.get_next_row(nullptr, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaCreateTableScannerTest, table_fail) {
     table_num = 1;
@@ -160,16 +160,16 @@ TEST_F(SchemaCreateTableScannerTest, table_fail) {
     desc_num = 1;
     SchemaCreateTableScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     s_table_result = Status::InternalError("get table failed");
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaCreateTableScannerTest, desc_fail) {
     table_num = 1;
@@ -177,16 +177,16 @@ TEST_F(SchemaCreateTableScannerTest, desc_fail) {
     desc_num = 1;
     SchemaCreateTableScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     s_desc_result = Status::InternalError("get desc failed");
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(SchemaCreateTableScannerTest, start_fail) {
@@ -195,21 +195,10 @@ TEST_F(SchemaCreateTableScannerTest, start_fail) {
     desc_num = 1;
     SchemaCreateTableScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     s_db_result = Status::InternalError("get db failed.");
     status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/schema_scanner/schema_engines_scanner_test.cpp b/be/test/exec/schema_scanner/schema_engines_scanner_test.cpp
index 44d6375f1e..15fb923ece 100644
--- a/be/test/exec/schema_scanner/schema_engines_scanner_test.cpp
+++ b/be/test/exec/schema_scanner/schema_engines_scanner_test.cpp
@@ -51,16 +51,16 @@ char g_tuple_buf[10000]; // enough for tuple
 TEST_F(SchemaEnginesScannerTest, normal_use) {
     SchemaEnginesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     while (!eos) {
         status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         if (!eos) {
             LOG(INFO) << print_tuple(tuple, *tuple_desc);
         }
@@ -70,40 +70,29 @@ TEST_F(SchemaEnginesScannerTest, normal_use) {
 TEST_F(SchemaEnginesScannerTest, use_with_no_init) {
     SchemaEnginesScanner scanner;
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr == tuple_desc);
+    EXPECT_TRUE(nullptr == tuple_desc);
     Status status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(SchemaEnginesScannerTest, invalid_param) {
     SchemaEnginesScanner scanner;
     Status status = scanner.init(&_param, nullptr);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, nullptr, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/schema_scanner/schema_open_tables_scanner_test.cpp b/be/test/exec/schema_scanner/schema_open_tables_scanner_test.cpp
index 488e00eba2..bee3fb8ad4 100644
--- a/be/test/exec/schema_scanner/schema_open_tables_scanner_test.cpp
+++ b/be/test/exec/schema_scanner/schema_open_tables_scanner_test.cpp
@@ -96,16 +96,16 @@ char g_tuple_buf[10000]; // enough for tuple
 TEST_F(SchemaOpenTablesScannerTest, normal_use) {
     SchemaOpenTablesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(eos);
 }
 TEST_F(SchemaOpenTablesScannerTest, one_column) {
     table_num = 1;
@@ -113,19 +113,19 @@ TEST_F(SchemaOpenTablesScannerTest, one_column) {
     desc_num = 1;
     SchemaOpenTablesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_FALSE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_FALSE(eos);
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(eos);
 }
 TEST_F(SchemaOpenTablesScannerTest, op_before_init) {
     table_num = 1;
@@ -133,11 +133,11 @@ TEST_F(SchemaOpenTablesScannerTest, op_before_init) {
     desc_num = 1;
     SchemaOpenTablesScanner scanner;
     Status status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaOpenTablesScannerTest, input_fail) {
     table_num = 1;
@@ -145,14 +145,14 @@ TEST_F(SchemaOpenTablesScannerTest, input_fail) {
     desc_num = 1;
     SchemaOpenTablesScanner scanner;
     Status status = scanner.init(nullptr, &_obj_pool);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     bool eos = false;
     status = scanner.get_next_row(nullptr, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaOpenTablesScannerTest, table_fail) {
     table_num = 1;
@@ -160,16 +160,16 @@ TEST_F(SchemaOpenTablesScannerTest, table_fail) {
     desc_num = 1;
     SchemaOpenTablesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     s_table_result = Status::InternalError("get table failed");
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaOpenTablesScannerTest, desc_fail) {
     table_num = 1;
@@ -177,16 +177,16 @@ TEST_F(SchemaOpenTablesScannerTest, desc_fail) {
     desc_num = 1;
     SchemaOpenTablesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     s_desc_result = Status::InternalError("get desc failed");
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(SchemaOpenTablesScannerTest, start_fail) {
@@ -195,21 +195,10 @@ TEST_F(SchemaOpenTablesScannerTest, start_fail) {
     desc_num = 1;
     SchemaOpenTablesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     s_db_result = Status::InternalError("get db failed.");
     status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/schema_scanner/schema_schemata_scanner_test.cpp b/be/test/exec/schema_scanner/schema_schemata_scanner_test.cpp
index ea823bed5d..b322fc36a9 100644
--- a/be/test/exec/schema_scanner/schema_schemata_scanner_test.cpp
+++ b/be/test/exec/schema_scanner/schema_schemata_scanner_test.cpp
@@ -96,16 +96,16 @@ char g_tuple_buf[10000]; // enough for tuple
 TEST_F(SchemaSchemataScannerTest, normal_use) {
     SchemaSchemataScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(eos);
 }
 TEST_F(SchemaSchemataScannerTest, one_column) {
     table_num = 1;
@@ -113,19 +113,19 @@ TEST_F(SchemaSchemataScannerTest, one_column) {
     desc_num = 1;
     SchemaSchemataScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_FALSE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_FALSE(eos);
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(eos);
 }
 TEST_F(SchemaSchemataScannerTest, op_before_init) {
     table_num = 1;
@@ -133,11 +133,11 @@ TEST_F(SchemaSchemataScannerTest, op_before_init) {
     desc_num = 1;
     SchemaSchemataScanner scanner;
     Status status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaSchemataScannerTest, input_fail) {
     table_num = 1;
@@ -145,14 +145,14 @@ TEST_F(SchemaSchemataScannerTest, input_fail) {
     desc_num = 1;
     SchemaSchemataScanner scanner;
     Status status = scanner.init(nullptr, &_obj_pool);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     bool eos = false;
     status = scanner.get_next_row(nullptr, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(SchemaSchemataScannerTest, start_fail) {
@@ -161,21 +161,10 @@ TEST_F(SchemaSchemataScannerTest, start_fail) {
     desc_num = 1;
     SchemaSchemataScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     s_db_result = Status::InternalError("get db failed.");
     status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/schema_scanner/schema_table_names_scanner_test.cpp b/be/test/exec/schema_scanner/schema_table_names_scanner_test.cpp
index 6e8ce962e4..cc38d22c80 100644
--- a/be/test/exec/schema_scanner/schema_table_names_scanner_test.cpp
+++ b/be/test/exec/schema_scanner/schema_table_names_scanner_test.cpp
@@ -96,16 +96,16 @@ char g_tuple_buf[10000]; // enough for tuple
 TEST_F(SchemaTableNamesScannerTest, normal_use) {
     SchemaTableNamesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(eos);
 }
 TEST_F(SchemaTableNamesScannerTest, one_column) {
     table_num = 1;
@@ -113,19 +113,19 @@ TEST_F(SchemaTableNamesScannerTest, one_column) {
     desc_num = 1;
     SchemaTableNamesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_FALSE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_FALSE(eos);
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(eos);
 }
 TEST_F(SchemaTableNamesScannerTest, op_before_init) {
     table_num = 1;
@@ -133,11 +133,11 @@ TEST_F(SchemaTableNamesScannerTest, op_before_init) {
     desc_num = 1;
     SchemaTableNamesScanner scanner;
     Status status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaTableNamesScannerTest, input_fail) {
     table_num = 1;
@@ -145,14 +145,14 @@ TEST_F(SchemaTableNamesScannerTest, input_fail) {
     desc_num = 1;
     SchemaTableNamesScanner scanner;
     Status status = scanner.init(nullptr, &_obj_pool);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     bool eos = false;
     status = scanner.get_next_row(nullptr, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaTableNamesScannerTest, table_fail) {
     table_num = 1;
@@ -160,16 +160,16 @@ TEST_F(SchemaTableNamesScannerTest, table_fail) {
     desc_num = 1;
     SchemaTableNamesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     s_table_result = Status::InternalError("get table failed");
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(SchemaTableNamesScannerTest, start_fail) {
@@ -178,21 +178,10 @@ TEST_F(SchemaTableNamesScannerTest, start_fail) {
     desc_num = 1;
     SchemaTableNamesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     s_db_result = Status::InternalError("get db failed.");
     status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/schema_scanner/schema_tables_scanner_test.cpp b/be/test/exec/schema_scanner/schema_tables_scanner_test.cpp
index 7ccc12cb11..4fbc399fd9 100644
--- a/be/test/exec/schema_scanner/schema_tables_scanner_test.cpp
+++ b/be/test/exec/schema_scanner/schema_tables_scanner_test.cpp
@@ -96,16 +96,16 @@ char g_tuple_buf[10000]; // enough for tuple
 TEST_F(SchemaTablesScannerTest, normal_use) {
     SchemaTablesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(eos);
 }
 TEST_F(SchemaTablesScannerTest, one_column) {
     table_num = 1;
@@ -113,19 +113,19 @@ TEST_F(SchemaTablesScannerTest, one_column) {
     desc_num = 1;
     SchemaTablesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_FALSE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_FALSE(eos);
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
-    ASSERT_TRUE(eos);
+    EXPECT_TRUE(status.ok());
+    EXPECT_TRUE(eos);
 }
 TEST_F(SchemaTablesScannerTest, op_before_init) {
     table_num = 1;
@@ -133,11 +133,11 @@ TEST_F(SchemaTablesScannerTest, op_before_init) {
     desc_num = 1;
     SchemaTablesScanner scanner;
     Status status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaTablesScannerTest, input_fail) {
     table_num = 1;
@@ -145,14 +145,14 @@ TEST_F(SchemaTablesScannerTest, input_fail) {
     desc_num = 1;
     SchemaTablesScanner scanner;
     Status status = scanner.init(nullptr, &_obj_pool);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     bool eos = false;
     status = scanner.get_next_row(nullptr, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaTablesScannerTest, table_fail) {
     table_num = 1;
@@ -160,16 +160,16 @@ TEST_F(SchemaTablesScannerTest, table_fail) {
     desc_num = 1;
     SchemaTablesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     s_table_result = Status::InternalError("get table failed");
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaTablesScannerTest, desc_fail) {
     table_num = 1;
@@ -177,16 +177,16 @@ TEST_F(SchemaTablesScannerTest, desc_fail) {
     desc_num = 1;
     SchemaTablesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     s_desc_result = Status::InternalError("get desc failed");
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(SchemaTablesScannerTest, start_fail) {
@@ -195,21 +195,10 @@ TEST_F(SchemaTablesScannerTest, start_fail) {
     desc_num = 1;
     SchemaTablesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     s_db_result = Status::InternalError("get db failed.");
     status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/schema_scanner/schema_variables_scanner_test.cpp b/be/test/exec/schema_scanner/schema_variables_scanner_test.cpp
index 01f7f9614c..714d2cee80 100644
--- a/be/test/exec/schema_scanner/schema_variables_scanner_test.cpp
+++ b/be/test/exec/schema_scanner/schema_variables_scanner_test.cpp
@@ -52,16 +52,16 @@ char g_tuple_buf[10000]; // enough for tuple
 TEST_F(SchemaVariablesScannerTest, normal_use) {
     SchemaVariablesScanner scanner;
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     while (!eos) {
         status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-        ASSERT_TRUE(status.ok());
+        EXPECT_TRUE(status.ok());
         if (!eos) {
             LOG(INFO) << print_tuple(tuple, *tuple_desc);
         }
@@ -71,40 +71,29 @@ TEST_F(SchemaVariablesScannerTest, normal_use) {
 TEST_F(SchemaVariablesScannerTest, use_with_no_init) {
     SchemaVariablesScanner scanner;
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr == tuple_desc);
+    EXPECT_TRUE(nullptr == tuple_desc);
     Status status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 TEST_F(SchemaVariablesScannerTest, invalid_param) {
     SchemaVariablesScanner scanner;
     Status status = scanner.init(&_param, nullptr);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
+    EXPECT_TRUE(nullptr != tuple_desc);
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos = false;
     status = scanner.get_next_row(tuple, nullptr, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/schema_scanner_test.cpp b/be/test/exec/schema_scanner_test.cpp
index 2f8c36a17b..4bb9d6ff8d 100644
--- a/be/test/exec/schema_scanner_test.cpp
+++ b/be/test/exec/schema_scanner_test.cpp
@@ -59,62 +59,51 @@ TEST_F(SchemaScannerTest, normal_use) {
     SchemaScanner scanner(s_test_columns,
                           sizeof(s_test_columns) / sizeof(SchemaScanner::ColumnDesc));
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
-    ASSERT_EQ(65, tuple_desc->byte_size());
+    EXPECT_TRUE(nullptr != tuple_desc);
+    EXPECT_EQ(65, tuple_desc->byte_size());
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
 }
 TEST_F(SchemaScannerTest, input_fail) {
     SchemaScanner scanner(s_test_columns,
                           sizeof(s_test_columns) / sizeof(SchemaScanner::ColumnDesc));
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scanner.init(&_param, &_obj_pool);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     status = scanner.start((RuntimeState*)1);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr != tuple_desc);
-    ASSERT_EQ(65, tuple_desc->byte_size());
+    EXPECT_TRUE(nullptr != tuple_desc);
+    EXPECT_EQ(65, tuple_desc->byte_size());
     bool eos;
     status = scanner.get_next_row(nullptr, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaScannerTest, invalid_param) {
     SchemaScanner scanner(nullptr, sizeof(s_test_columns) / sizeof(SchemaScanner::ColumnDesc));
     Status status = scanner.init(&_param, &_obj_pool);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 TEST_F(SchemaScannerTest, no_init_use) {
     SchemaScanner scanner(s_test_columns,
                           sizeof(s_test_columns) / sizeof(SchemaScanner::ColumnDesc));
     Status status = scanner.start((RuntimeState*)1);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     const TupleDescriptor* tuple_desc = scanner.tuple_desc();
-    ASSERT_TRUE(nullptr == tuple_desc);
+    EXPECT_TRUE(nullptr == tuple_desc);
     Tuple* tuple = (Tuple*)g_tuple_buf;
     bool eos;
     status = scanner.get_next_row(tuple, &_mem_pool, &eos);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/set_executor_test.cpp b/be/test/exec/set_executor_test.cpp
index deb60ea233..5628c90f32 100644
--- a/be/test/exec/set_executor_test.cpp
+++ b/be/test/exec/set_executor_test.cpp
@@ -84,7 +84,7 @@ TEST_F(SetExecutorTest, normal_case) {
     SetExecutor executor(&doris_server, params);
     RowDescriptor row_desc;
     Status status = executor.prepare((RuntimeState*)&_runtime_state, row_desc);
-    ASSERT_TRUE(status.ok());
+    EXPECT_TRUE(status.ok());
     LOG(INFO) << executor.debug_string();
 }
 TEST_F(SetExecutorTest, failed_case) {
@@ -107,19 +107,7 @@ TEST_F(SetExecutorTest, failed_case) {
     SetExecutor executor(&doris_server, params);
     RowDescriptor row_desc;
     Status status = executor.prepare((RuntimeState*)&_runtime_state, row_desc);
-    ASSERT_FALSE(status.ok());
+    EXPECT_FALSE(status.ok());
     LOG(INFO) << executor.debug_string();
 }
 } // namespace doris
-
-int main(int argc, char** argv) {
-    std::string conffile = std::string(getenv("DORIS_HOME")) + "/conf/be.conf";
-    if (!doris::config::init(conffile.c_str(), false)) {
-        fprintf(stderr, "error read config file. \n");
-        return -1;
-    }
-    init_glog("be-test");
-    ::testing::InitGoogleTest(&argc, argv);
-    doris::CpuInfo::Init();
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/tablet_info_test.cpp b/be/test/exec/tablet_info_test.cpp
index 9b676d55f7..9653723f4d 100644
--- a/be/test/exec/tablet_info_test.cpp
+++ b/be/test/exec/tablet_info_test.cpp
@@ -74,7 +74,7 @@ TEST_F(OlapTablePartitionParamTest, normal) {
     auto t_schema = get_schema(&t_desc_tbl);
     std::shared_ptr<OlapTableSchemaParam> schema(new OlapTableSchemaParam());
     auto st = schema->init(t_schema);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     LOG(INFO) << schema->debug_string();
 
     // (-oo, 10] | [10.50) | [60, +oo)
@@ -135,13 +135,13 @@ TEST_F(OlapTablePartitionParamTest, normal) {
 
     OlapTablePartitionParam part(schema, t_partition_param);
     st = part.init();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     LOG(INFO) << part.debug_string();
 
     ObjectPool pool;
     DescriptorTbl* desc_tbl = nullptr;
     st = DescriptorTbl::create(&pool, t_desc_tbl, &desc_tbl);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     RowDescriptor row_desc(*desc_tbl, {0}, {false});
     TupleDescriptor* tuple_desc = desc_tbl->get_tuple_descriptor(0);
     auto tracker = std::make_shared<MemTracker>();
@@ -161,8 +161,8 @@ TEST_F(OlapTablePartitionParamTest, normal) {
         // 9:
         const OlapTablePartition* partition = nullptr;
         auto found = part.find_partition(tuple, &partition);
-        ASSERT_TRUE(found);
-        ASSERT_EQ(10, partition->id);
+        EXPECT_TRUE(found);
+        EXPECT_EQ(10, partition->id);
     }
     // 13, 25, "abcd"
     {
@@ -179,8 +179,8 @@ TEST_F(OlapTablePartitionParamTest, normal) {
         // 25:
         const OlapTablePartition* partition = nullptr;
         auto found = part.find_partition(tuple, &partition);
-        ASSERT_TRUE(found);
-        ASSERT_EQ(11, partition->id);
+        EXPECT_TRUE(found);
+        EXPECT_EQ(11, partition->id);
     }
     // 14, 50, "abcde"
     {
@@ -197,7 +197,7 @@ TEST_F(OlapTablePartitionParamTest, normal) {
         // 50:
         const OlapTablePartition* partition = nullptr;
         auto found = part.find_partition(tuple, &partition);
-        ASSERT_FALSE(found);
+        EXPECT_FALSE(found);
     }
 
     // 15, 60, "abcdef"
@@ -215,8 +215,8 @@ TEST_F(OlapTablePartitionParamTest, normal) {
         // 60:
         const OlapTablePartition* partition = nullptr;
         auto found = part.find_partition(tuple, &partition);
-        ASSERT_TRUE(found);
-        ASSERT_EQ(12, partition->id);
+        EXPECT_TRUE(found);
+        EXPECT_EQ(12, partition->id);
     }
 }
 
@@ -234,7 +234,7 @@ TEST_F(OlapTablePartitionParamTest, single_list_partition) {
     auto t_schema = get_schema(&t_desc_tbl);
     std::shared_ptr<OlapTableSchemaParam> schema(new OlapTableSchemaParam());
     auto st = schema->init(t_schema);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     LOG(INFO) << schema->debug_string();
 
     // 1 | 2 | 3 | 4 | 5 | 6
@@ -328,13 +328,13 @@ TEST_F(OlapTablePartitionParamTest, single_list_partition) {
 
     OlapTablePartitionParam part(schema, t_partition_param);
     st = part.init();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     LOG(INFO) << part.debug_string();
 
     ObjectPool pool;
     DescriptorTbl* desc_tbl = nullptr;
     st = DescriptorTbl::create(&pool, t_desc_tbl, &desc_tbl);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     RowDescriptor row_desc(*desc_tbl, {0}, {false});
     TupleDescriptor* tuple_desc = desc_tbl->get_tuple_descriptor(0);
     auto tracker = std::make_shared<MemTracker>();
@@ -354,8 +354,8 @@ TEST_F(OlapTablePartitionParamTest, single_list_partition) {
         // 1:
         const OlapTablePartition* partition = nullptr;
         auto found = part.find_partition(tuple, &partition);
-        ASSERT_TRUE(found);
-        ASSERT_EQ(10, partition->id);
+        EXPECT_TRUE(found);
+        EXPECT_EQ(10, partition->id);
     }
     // 13, 3, "abcd"
     {
@@ -372,8 +372,8 @@ TEST_F(OlapTablePartitionParamTest, single_list_partition) {
         // 3:
         const OlapTablePartition* partition = nullptr;
         auto found = part.find_partition(tuple, &partition);
-        ASSERT_TRUE(found);
-        ASSERT_EQ(11, partition->id);
+        EXPECT_TRUE(found);
+        EXPECT_EQ(11, partition->id);
     }
     // 14, 50, "abcde"
     {
@@ -390,7 +390,7 @@ TEST_F(OlapTablePartitionParamTest, single_list_partition) {
         // 50:
         const OlapTablePartition* partition = nullptr;
         auto found = part.find_partition(tuple, &partition);
-        ASSERT_FALSE(found);
+        EXPECT_FALSE(found);
     }
 
     // 15, 6, "abcdef"
@@ -408,8 +408,8 @@ TEST_F(OlapTablePartitionParamTest, single_list_partition) {
         // 6:
         const OlapTablePartition* partition = nullptr;
         auto found = part.find_partition(tuple, &partition);
-        ASSERT_TRUE(found);
-        ASSERT_EQ(12, partition->id);
+        EXPECT_TRUE(found);
+        EXPECT_EQ(12, partition->id);
     }
 }
 
@@ -429,7 +429,7 @@ TEST_F(OlapTablePartitionParamTest, multi_list_partition) {
     auto t_schema = get_schema(&t_desc_tbl);
     std::shared_ptr<OlapTableSchemaParam> schema(new OlapTableSchemaParam());
     auto st = schema->init(t_schema);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     LOG(INFO) << schema->debug_string();
 
     // 1
@@ -446,14 +446,14 @@ TEST_F(OlapTablePartitionParamTest, multi_list_partition) {
     node_2.num_children = 0;
     node_2.__isset.int_literal = true;
     node_2.int_literal.value = 2;
-    // beijing 
+    // beijing
     TExprNode node_b;
     node_b.node_type = TExprNodeType::STRING_LITERAL;
     node_b.type = t_desc_tbl.slotDescriptors[2].slotType;
     node_b.num_children = 0;
     node_b.__isset.string_literal = true;
     node_b.string_literal.value = "beijing";
-    // shanghai 
+    // shanghai
     TExprNode node_s;
     node_s.node_type = TExprNodeType::STRING_LITERAL;
     node_s.type = t_desc_tbl.slotDescriptors[2].slotType;
@@ -540,13 +540,13 @@ TEST_F(OlapTablePartitionParamTest, multi_list_partition) {
     OlapTablePartitionParam part(schema, t_partition_param);
     st = part.init();
     LOG(INFO) << st.get_error_msg();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     LOG(INFO) << part.debug_string();
 
     ObjectPool pool;
     DescriptorTbl* desc_tbl = nullptr;
     st = DescriptorTbl::create(&pool, t_desc_tbl, &desc_tbl);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     RowDescriptor row_desc(*desc_tbl, {0}, {false});
     TupleDescriptor* tuple_desc = desc_tbl->get_tuple_descriptor(0);
     auto tracker = std::make_shared<MemTracker>();
@@ -566,8 +566,8 @@ TEST_F(OlapTablePartitionParamTest, multi_list_partition) {
         // 1, beijing
         const OlapTablePartition* partition = nullptr;
         auto found = part.find_partition(tuple, &partition);
-        ASSERT_TRUE(found);
-        ASSERT_EQ(10, partition->id);
+        EXPECT_TRUE(found);
+        EXPECT_EQ(10, partition->id);
     }
     // 13, 2, "shanghai"
     {
@@ -584,8 +584,8 @@ TEST_F(OlapTablePartitionParamTest, multi_list_partition) {
         // 2, shanghai
         const OlapTablePartition* partition = nullptr;
         auto found = part.find_partition(tuple, &partition);
-        ASSERT_TRUE(found);
-        ASSERT_EQ(12, partition->id);
+        EXPECT_TRUE(found);
+        EXPECT_EQ(12, partition->id);
     }
     // 14, 50, "beijing"
     {
@@ -602,7 +602,7 @@ TEST_F(OlapTablePartitionParamTest, multi_list_partition) {
         // 50, beijing
         const OlapTablePartition* partition = nullptr;
         auto found = part.find_partition(tuple, &partition);
-        ASSERT_FALSE(found);
+        EXPECT_FALSE(found);
     }
 
     // 15, 1, "tianjin"
@@ -620,8 +620,8 @@ TEST_F(OlapTablePartitionParamTest, multi_list_partition) {
         // 1, tianjin
         const OlapTablePartition* partition = nullptr;
         auto found = part.find_partition(tuple, &partition);
-        ASSERT_TRUE(found);
-        ASSERT_EQ(11, partition->id);
+        EXPECT_TRUE(found);
+        EXPECT_EQ(11, partition->id);
     }
 }
 
@@ -630,15 +630,15 @@ TEST_F(OlapTablePartitionParamTest, to_protobuf) {
     auto t_schema = get_schema(&t_desc_tbl);
     std::shared_ptr<OlapTableSchemaParam> schema(new OlapTableSchemaParam());
     auto st = schema->init(t_schema);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     POlapTableSchemaParam pschema;
     schema->to_protobuf(&pschema);
     {
         std::shared_ptr<OlapTableSchemaParam> schema2(new OlapTableSchemaParam());
         auto st = schema2->init(pschema);
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
 
-        ASSERT_STREQ(schema->debug_string().c_str(), schema2->debug_string().c_str());
+        EXPECT_STREQ(schema->debug_string().c_str(), schema2->debug_string().c_str());
     }
 }
 
@@ -648,7 +648,7 @@ TEST_F(OlapTablePartitionParamTest, unknown_index_column) {
     std::shared_ptr<OlapTableSchemaParam> schema(new OlapTableSchemaParam());
     tschema.indexes[0].columns.push_back("unknown_col");
     auto st = schema->init(tschema);
-    ASSERT_FALSE(st.ok());
+    EXPECT_FALSE(st.ok());
 }
 
 TEST_F(OlapTablePartitionParamTest, unpartitioned) {
@@ -656,7 +656,7 @@ TEST_F(OlapTablePartitionParamTest, unpartitioned) {
     auto t_schema = get_schema(&t_desc_tbl);
     std::shared_ptr<OlapTableSchemaParam> schema(new OlapTableSchemaParam());
     auto st = schema->init(t_schema);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     // (-oo, 10] | [10.50) | [60, +oo)
     TOlapTablePartitionParam t_partition_param;
@@ -674,12 +674,12 @@ TEST_F(OlapTablePartitionParamTest, unpartitioned) {
 
     OlapTablePartitionParam part(schema, t_partition_param);
     st = part.init();
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     ObjectPool pool;
     DescriptorTbl* desc_tbl = nullptr;
     st = DescriptorTbl::create(&pool, t_desc_tbl, &desc_tbl);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     RowDescriptor row_desc(*desc_tbl, {0}, {false});
     TupleDescriptor* tuple_desc = desc_tbl->get_tuple_descriptor(0);
     auto tracker = std::make_shared<MemTracker>();
@@ -699,8 +699,8 @@ TEST_F(OlapTablePartitionParamTest, unpartitioned) {
         // 9:
         const OlapTablePartition* partition = nullptr;
         auto found = part.find_partition(tuple, &partition);
-        ASSERT_TRUE(found);
-        ASSERT_EQ(10, partition->id);
+        EXPECT_TRUE(found);
+        EXPECT_EQ(10, partition->id);
     }
 }
 
@@ -709,7 +709,7 @@ TEST_F(OlapTablePartitionParamTest, unknown_partition_column) {
     auto t_schema = get_schema(&t_desc_tbl);
     std::shared_ptr<OlapTableSchemaParam> schema(new OlapTableSchemaParam());
     auto st = schema->init(t_schema);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     // (-oo, 10] | [10.50) | [60, +oo)
     TOlapTablePartitionParam t_partition_param;
@@ -728,7 +728,7 @@ TEST_F(OlapTablePartitionParamTest, unknown_partition_column) {
 
     OlapTablePartitionParam part(schema, t_partition_param);
     st = part.init();
-    ASSERT_FALSE(st.ok());
+    EXPECT_FALSE(st.ok());
 }
 
 TEST_F(OlapTablePartitionParamTest, unknown_distributed_col) {
@@ -736,7 +736,7 @@ TEST_F(OlapTablePartitionParamTest, unknown_distributed_col) {
     auto t_schema = get_schema(&t_desc_tbl);
     std::shared_ptr<OlapTableSchemaParam> schema(new OlapTableSchemaParam());
     auto st = schema->init(t_schema);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     // (-oo, 10] | [10.50) | [60, +oo)
     TOlapTablePartitionParam t_partition_param;
@@ -754,7 +754,7 @@ TEST_F(OlapTablePartitionParamTest, unknown_distributed_col) {
 
     OlapTablePartitionParam part(schema, t_partition_param);
     st = part.init();
-    ASSERT_FALSE(st.ok());
+    EXPECT_FALSE(st.ok());
 }
 
 TEST_F(OlapTablePartitionParamTest, bad_index) {
@@ -762,7 +762,7 @@ TEST_F(OlapTablePartitionParamTest, bad_index) {
     auto t_schema = get_schema(&t_desc_tbl);
     std::shared_ptr<OlapTableSchemaParam> schema(new OlapTableSchemaParam());
     auto st = schema->init(t_schema);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     {
         // (-oo, 10] | [10.50) | [60, +oo)
@@ -780,7 +780,7 @@ TEST_F(OlapTablePartitionParamTest, bad_index) {
 
         OlapTablePartitionParam part(schema, t_partition_param);
         st = part.init();
-        ASSERT_FALSE(st.ok());
+        EXPECT_FALSE(st.ok());
     }
     {
         // (-oo, 10] | [10.50) | [60, +oo)
@@ -800,7 +800,7 @@ TEST_F(OlapTablePartitionParamTest, bad_index) {
 
         OlapTablePartitionParam part(schema, t_partition_param);
         st = part.init();
-        ASSERT_FALSE(st.ok());
+        EXPECT_FALSE(st.ok());
     }
 }
 
@@ -811,11 +811,11 @@ TEST_F(OlapTablePartitionParamTest, tableLoacation) {
     OlapTableLocationParam location(tparam);
     {
         auto loc = location.find_tablet(1);
-        ASSERT_TRUE(loc != nullptr);
+        EXPECT_TRUE(loc != nullptr);
     }
     {
         auto loc = location.find_tablet(2);
-        ASSERT_TRUE(loc == nullptr);
+        EXPECT_TRUE(loc == nullptr);
     }
 }
 
@@ -826,17 +826,12 @@ TEST_F(OlapTablePartitionParamTest, NodesInfo) {
     DorisNodesInfo nodes(tinfo);
     {
         auto node = nodes.find_node(1);
-        ASSERT_TRUE(node != nullptr);
+        EXPECT_TRUE(node != nullptr);
     }
     {
         auto node = nodes.find_node(2);
-        ASSERT_TRUE(node == nullptr);
+        EXPECT_TRUE(node == nullptr);
     }
 }
 
 } // namespace doris
-
-int main(int argc, char* argv[]) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/tablet_sink_test.cpp b/be/test/exec/tablet_sink_test.cpp
index ac9073d7d3..d3bfeb472f 100644
--- a/be/test/exec/tablet_sink_test.cpp
+++ b/be/test/exec/tablet_sink_test.cpp
@@ -31,8 +31,8 @@
 #include "runtime/runtime_state.h"
 #include "runtime/stream_load/load_stream_mgr.h"
 #include "runtime/thread_resource_mgr.h"
-#include "runtime/types.h"
 #include "runtime/tuple_row.h"
+#include "runtime/types.h"
 #include "service/brpc.h"
 #include "util/brpc_client_cache.h"
 #include "util/cpu_info.h"
@@ -372,7 +372,7 @@ TEST_F(OlapTableSinkTest, normal) {
     // start brpc service first
     _server = new brpc::Server();
     auto service = new TestInternalService();
-    ASSERT_EQ(_server->AddService(service, brpc::SERVER_OWNS_SERVICE), 0);
+    EXPECT_EQ(_server->AddService(service, brpc::SERVER_OWNS_SERVICE), 0);
     brpc::ServerOptions options;
     {
         debug::ScopedLeakCheckDisabler disable_lsan;
@@ -394,7 +394,7 @@ TEST_F(OlapTableSinkTest, normal) {
     // crate desc_tabl
     DescriptorTbl* desc_tbl = nullptr;
     auto st = DescriptorTbl::create(&obj_pool, tdesc_tbl, &desc_tbl);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     state._desc_tbl = desc_tbl;
 
     TupleDescriptor* tuple_desc = desc_tbl->get_tuple_descriptor(0);
@@ -403,17 +403,17 @@ TEST_F(OlapTableSinkTest, normal) {
     RowDescriptor row_desc(*desc_tbl, {0}, {false});
 
     OlapTableSink sink(&obj_pool, row_desc, {}, &st);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     // init
     st = sink.init(t_data_sink);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // prepare
     st = sink.prepare(&state);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // open
     st = sink.open(&state);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // send
     auto tracker = std::make_shared<MemTracker>();
     RowBatch batch(row_desc, 1024, tracker.get());
@@ -462,25 +462,25 @@ TEST_F(OlapTableSinkTest, normal) {
         batch.commit_last_row();
     }
     st = sink.send(&state, &batch);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // close
     st = sink.close(&state, Status::OK());
-    ASSERT_TRUE(st.ok() || st.to_string() == "Internal error: wait close failed. ")
+    EXPECT_TRUE(st.ok() || st.to_string() == "Internal error: wait close failed. ")
             << st.to_string();
 
     // each node has a eof
-    ASSERT_EQ(2, service->_eof_counters);
-    ASSERT_EQ(2 * 2, service->_row_counters);
+    EXPECT_EQ(2, service->_eof_counters);
+    EXPECT_EQ(2 * 2, service->_row_counters);
 
     // 2node * 2
-    ASSERT_EQ(1, state.num_rows_load_filtered());
+    EXPECT_EQ(1, state.num_rows_load_filtered());
 }
 
 TEST_F(OlapTableSinkTest, convert) {
     // start brpc service first
     _server = new brpc::Server();
     auto service = new TestInternalService();
-    ASSERT_EQ(_server->AddService(service, brpc::SERVER_OWNS_SERVICE), 0);
+    EXPECT_EQ(_server->AddService(service, brpc::SERVER_OWNS_SERVICE), 0);
     brpc::ServerOptions options;
     {
         debug::ScopedLeakCheckDisabler disable_lsan;
@@ -500,7 +500,7 @@ TEST_F(OlapTableSinkTest, convert) {
     // crate desc_tabl
     DescriptorTbl* desc_tbl = nullptr;
     auto st = DescriptorTbl::create(&obj_pool, tdesc_tbl, &desc_tbl);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     state._desc_tbl = desc_tbl;
 
     TupleDescriptor* tuple_desc = desc_tbl->get_tuple_descriptor(0);
@@ -535,19 +535,19 @@ TEST_F(OlapTableSinkTest, convert) {
     exprs[2].nodes[0].slot_ref.tuple_id = 1;
 
     OlapTableSink sink(&obj_pool, row_desc, exprs, &st);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     // set output tuple_id
     t_data_sink.olap_table_sink.tuple_id = 1;
     // init
     st = sink.init(t_data_sink);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // prepare
     st = sink.prepare(&state);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // open
     st = sink.open(&state);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // send
     auto tracker = std::make_shared<MemTracker>();
     RowBatch batch(row_desc, 1024, tracker.get());
@@ -596,18 +596,18 @@ TEST_F(OlapTableSinkTest, convert) {
         batch.commit_last_row();
     }
     st = sink.send(&state, &batch);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // close
     st = sink.close(&state, Status::OK());
-    ASSERT_TRUE(st.ok() || st.to_string() == "Internal error: wait close failed. ")
+    EXPECT_TRUE(st.ok() || st.to_string() == "Internal error: wait close failed. ")
             << st.to_string();
 
     // each node has a eof
-    ASSERT_EQ(2, service->_eof_counters);
-    ASSERT_EQ(2 * 3, service->_row_counters);
+    EXPECT_EQ(2, service->_eof_counters);
+    EXPECT_EQ(2 * 3, service->_row_counters);
 
     // 2node * 2
-    ASSERT_EQ(0, state.num_rows_load_filtered());
+    EXPECT_EQ(0, state.num_rows_load_filtered());
 }
 
 TEST_F(OlapTableSinkTest, init_fail1) {
@@ -624,7 +624,7 @@ TEST_F(OlapTableSinkTest, init_fail1) {
     // crate desc_tabl
     DescriptorTbl* desc_tbl = nullptr;
     auto st = DescriptorTbl::create(&obj_pool, tdesc_tbl, &desc_tbl);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     state._desc_tbl = desc_tbl;
 
     RowDescriptor row_desc(*desc_tbl, {0}, {false});
@@ -642,26 +642,26 @@ TEST_F(OlapTableSinkTest, init_fail1) {
 
     {
         OlapTableSink sink(&obj_pool, row_desc, exprs, &st);
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
 
         // set output tuple_id
         t_data_sink.olap_table_sink.tuple_id = 5;
         // init
         st = sink.init(t_data_sink);
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
         st = sink.prepare(&state);
         EXPECT_FALSE(st.ok());
         sink.close(&state, st);
     }
     {
         OlapTableSink sink(&obj_pool, row_desc, exprs, &st);
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
 
         // set output tuple_id
         t_data_sink.olap_table_sink.tuple_id = 1;
         // init
         st = sink.init(t_data_sink);
-        ASSERT_TRUE(st.ok());
+        EXPECT_TRUE(st.ok());
         st = sink.prepare(&state);
         EXPECT_FALSE(st.ok());
         sink.close(&state, st);
@@ -682,7 +682,7 @@ TEST_F(OlapTableSinkTest, init_fail3) {
     // crate desc_tabl
     DescriptorTbl* desc_tbl = nullptr;
     auto st = DescriptorTbl::create(&obj_pool, tdesc_tbl, &desc_tbl);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     state._desc_tbl = desc_tbl;
 
     RowDescriptor row_desc(*desc_tbl, {0}, {false});
@@ -715,13 +715,13 @@ TEST_F(OlapTableSinkTest, init_fail3) {
     exprs[2].nodes[0].slot_ref.tuple_id = 1;
 
     OlapTableSink sink(&obj_pool, row_desc, exprs, &st);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     // set output tuple_id
     t_data_sink.olap_table_sink.tuple_id = 1;
     // init
     st = sink.init(t_data_sink);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = sink.prepare(&state);
     EXPECT_FALSE(st.ok());
     sink.close(&state, st);
@@ -741,7 +741,7 @@ TEST_F(OlapTableSinkTest, init_fail4) {
     // crate desc_tabl
     DescriptorTbl* desc_tbl = nullptr;
     auto st = DescriptorTbl::create(&obj_pool, tdesc_tbl, &desc_tbl);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     state._desc_tbl = desc_tbl;
 
     RowDescriptor row_desc(*desc_tbl, {0}, {false});
@@ -774,14 +774,14 @@ TEST_F(OlapTableSinkTest, init_fail4) {
     exprs[2].nodes[0].slot_ref.tuple_id = 1;
 
     OlapTableSink sink(&obj_pool, row_desc, exprs, &st);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     // set output tuple_id
     t_data_sink.olap_table_sink.tuple_id = 1;
     // init
     t_data_sink.olap_table_sink.partition.partitions[0].indexes[0].tablets = {101, 102};
     st = sink.init(t_data_sink);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = sink.prepare(&state);
     EXPECT_FALSE(st.ok());
     sink.close(&state, st);
@@ -791,7 +791,7 @@ TEST_F(OlapTableSinkTest, add_batch_failed) {
     // start brpc service first
     _server = new brpc::Server();
     auto service = new TestInternalService();
-    ASSERT_EQ(_server->AddService(service, brpc::SERVER_OWNS_SERVICE), 0);
+    EXPECT_EQ(_server->AddService(service, brpc::SERVER_OWNS_SERVICE), 0);
     brpc::ServerOptions options;
     {
         debug::ScopedLeakCheckDisabler disable_lsan;
@@ -813,7 +813,7 @@ TEST_F(OlapTableSinkTest, add_batch_failed) {
     // crate desc_tabl
     DescriptorTbl* desc_tbl = nullptr;
     auto st = DescriptorTbl::create(&obj_pool, tdesc_tbl, &desc_tbl);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     state._desc_tbl = desc_tbl;
 
     RowDescriptor row_desc(*desc_tbl, {0}, {false});
@@ -846,17 +846,17 @@ TEST_F(OlapTableSinkTest, add_batch_failed) {
     exprs[2].nodes[0].slot_ref.tuple_id = 1;
 
     OlapTableSink sink(&obj_pool, row_desc, exprs, &st);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     // set output tuple_id
     t_data_sink.olap_table_sink.tuple_id = 1;
     // init
     st = sink.init(t_data_sink);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = sink.prepare(&state);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     st = sink.open(&state);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // send
     auto tracker = std::make_shared<MemTracker>();
     RowBatch batch(row_desc, 1024, tracker.get());
@@ -879,7 +879,7 @@ TEST_F(OlapTableSinkTest, add_batch_failed) {
     // Channels will be cancelled internally, coz brpc returns k_add_batch_status.
     k_add_batch_status = Status::InternalError("dummy failed");
     st = sink.send(&state, &batch);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     // Send batch multiple times, can make _cur_batch or _pending_batches(in channels) not empty.
     // To ensure the order of releasing resource is OK.
@@ -888,14 +888,14 @@ TEST_F(OlapTableSinkTest, add_batch_failed) {
 
     // close
     st = sink.close(&state, Status::OK());
-    ASSERT_FALSE(st.ok());
+    EXPECT_FALSE(st.ok());
 }
 
 TEST_F(OlapTableSinkTest, decimal) {
     // start brpc service first
     _server = new brpc::Server();
     auto service = new TestInternalService();
-    ASSERT_EQ(_server->AddService(service, brpc::SERVER_OWNS_SERVICE), 0);
+    EXPECT_EQ(_server->AddService(service, brpc::SERVER_OWNS_SERVICE), 0);
     brpc::ServerOptions options;
     {
         debug::ScopedLeakCheckDisabler disable_lsan;
@@ -915,7 +915,7 @@ TEST_F(OlapTableSinkTest, decimal) {
     // crate desc_tabl
     DescriptorTbl* desc_tbl = nullptr;
     auto st = DescriptorTbl::create(&obj_pool, tdesc_tbl, &desc_tbl);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     state._desc_tbl = desc_tbl;
 
     TupleDescriptor* tuple_desc = desc_tbl->get_tuple_descriptor(0);
@@ -927,17 +927,17 @@ TEST_F(OlapTableSinkTest, decimal) {
     service->_output_set = &output_set;
 
     OlapTableSink sink(&obj_pool, row_desc, {}, &st);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
 
     // init
     st = sink.init(t_data_sink);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // prepare
     st = sink.prepare(&state);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // open
     st = sink.open(&state);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // send
     auto tracker = std::make_shared<MemTracker>();
     RowBatch batch(row_desc, 1024, tracker.get());
@@ -977,23 +977,17 @@ TEST_F(OlapTableSinkTest, decimal) {
         batch.commit_last_row();
     }
     st = sink.send(&state, &batch);
-    ASSERT_TRUE(st.ok());
+    EXPECT_TRUE(st.ok());
     // close
     st = sink.close(&state, Status::OK());
-    ASSERT_TRUE(st.ok() || st.to_string() == "Internal error: wait close failed. ")
+    EXPECT_TRUE(st.ok() || st.to_string() == "Internal error: wait close failed. ")
             << st.to_string();
 
-    ASSERT_EQ(2, output_set.size());
-    ASSERT_TRUE(output_set.count("[(12 12.3)]") > 0);
-    ASSERT_TRUE(output_set.count("[(13 123.12)]") > 0);
-    // ASSERT_TRUE(output_set.count("[(14 999.99)]") > 0);
+    EXPECT_EQ(2, output_set.size());
+    EXPECT_TRUE(output_set.count("[(12 12.3)]") > 0);
+    EXPECT_TRUE(output_set.count("[(13 123.12)]") > 0);
+    // EXPECT_TRUE(output_set.count("[(14 999.99)]") > 0);
 }
 
 } // namespace stream_load
 } // namespace doris
-
-int main(int argc, char* argv[]) {
-    doris::CpuInfo::init();
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exec/unix_odbc_test.cpp b/be/test/exec/unix_odbc_test.cpp
index a9d3f9708a..051393f11e 100644
--- a/be/test/exec/unix_odbc_test.cpp
+++ b/be/test/exec/unix_odbc_test.cpp
@@ -16,13 +16,3 @@
 // under the License.
 
 #include <sql.h>
-
-int main(int argc, char* argv[]) {
-    SQLRETURN ret;
-    SQLHENV env;
-
-    /* Allocate an environment handle */
-    ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
-
-    return ret;
-}
diff --git a/be/test/exprs/CMakeLists.txt b/be/test/exprs/CMakeLists.txt
deleted file mode 100644
index 329c9e1100..0000000000
--- a/be/test/exprs/CMakeLists.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# where to put generated libraries
-set(LIBRARY_OUTPUT_PATH "${BUILD_DIR}/test/exprs")
-
-# where to put generated binaries
-set(EXECUTABLE_OUTPUT_PATH "${BUILD_DIR}/test/exprs")
-
-ADD_BE_TEST(json_function_test)
-#ADD_BE_TEST(binary_predicate_test)
-#ADD_BE_TEST(in_predicate_test)
-#ADD_BE_TEST(expr-test)
-#ADD_BE_TEST(hybrid_set_test)
-ADD_BE_TEST(string_functions_test)
-ADD_BE_TEST(timestamp_functions_test)
-ADD_BE_TEST(percentile_approx_test)
-ADD_BE_TEST(percentile_test)
-ADD_BE_TEST(bitmap_function_test)
-ADD_BE_TEST(hll_function_test)
-ADD_BE_TEST(encryption_functions_test)
-#ADD_BE_TEST(in-predicate-test)
-ADD_BE_TEST(math_functions_test)
-ADD_BE_TEST(topn_function_test)
-ADD_BE_TEST(runtime_filter_test)
-ADD_BE_TEST(bloom_filter_predicate_test)
-ADD_BE_TEST(array_functions_test)
-ADD_BE_TEST(window_funnel_test)
diff --git a/be/test/exprs/array_functions_test.cpp b/be/test/exprs/array_functions_test.cpp
index 8ed72a1ce6..2c07dd9b62 100644
--- a/be/test/exprs/array_functions_test.cpp
+++ b/be/test/exprs/array_functions_test.cpp
@@ -75,8 +75,3 @@ TEST_F(ArrayFunctionsTest, array) {
 }
 
 } // namespace doris
-
-int main(int argc, char** argv) {
-    ::testing::InitGoogleTest(&argc, argv);
-    return RUN_ALL_TESTS();
-}
diff --git a/be/test/exprs/binary_predicate_test.cpp b/be/test/exprs/binary_predicate_test.cpp
index 6a05e23ebd..88d1566cd3 100644
--- a/be/test/exprs/binary_predicate_test.cpp
+++ b/be/test/exprs/binary_predicate_test.cpp
@@ -60,8 +60,8 @@ public:
         ttbl.slotDescriptors.push_back(slot_desc);
 
         DescriptorTbl* desc_tbl = nullptr;
-        ASSERT_TRUE(DescriptorTbl::create(_object_pool, ttbl, &desc_tbl).ok());
-        ASSERT_TRUE(desc_tbl != nullptr);
+        EXPECT_TRUE(DescriptorTbl::create(_object_pool, ttbl, &desc_tbl).ok());
+        EXPECT_TRUE(desc_tbl != nullptr);
         _runtime_state->set_desc_tbl(desc_tbl);
 
         std::vector<TTupleId> row_tuples;
@@ -151,14 +151,14 @@ private:
 
 TEST_F(BinaryOpTest, PrepareTest) {
     Expr* expr = create_expr();
-    ASSERT_TRUE(expr != nullptr);
-    ASSERT_TRUE(expr->prepare(runtime_state(), *row_desc()).ok());
+    EXPECT_TRUE(expr != nullptr);
+    EXPECT_TRUE(expr->prepare(runtime_state(), *row_desc()).ok());
 }
 
 TEST_F(BinaryOpTest, NormalTest) {
     Expr* expr = create_expr();
-    ASSERT_TRUE(expr != nullptr);
-    ASSERT_TRUE(expr->prepare(runtime_state(), *row_desc()).ok());
+    EXPECT_TRUE(expr != nullptr);
+    EXPECT_TRUE(expr->prepare(runtime_state(), *row_desc()).ok());
     int capacity = 256;
     VectorizedRowBatch* vec_row_batch =
             object_pool()->add(new VectorizedRowBatch(_schema, capacity));
@@ -172,23 +172,23 @@ TEST_F(BinaryOpTest, NormalTest) {
 
     vec_row_batch->set_size(capacity);
     expr->evaluate(vec_row_batch);
-    ASSERT_EQ(vec_row_batch->size(), 10);
+    EXPECT_EQ(vec_row_batch->size(), 10);
 
     Tuple tuple;
     int vv = 0;
 
     while (vec_row_batch->get_next_tuple(&tuple,
                                          *runtime_state()->desc_tbl().get_tuple_descriptor(0))) {
-        ASSERT_EQ(vv++, *reinterpret_cast<int32_t*>(tuple.get_slot(4)));
+        EXPECT_EQ(vv++, *reinterpret_cast<int32_t*>(tuple.get_slot(4)));
     }
 }
 
 TEST_F(BinaryOpTest, SimplePerformanceTest) {
-    ASSERT_EQ(1, _row_desc->tuple_descriptors().size());
+    EXPECT_EQ(1, _row_desc->tuple_descriptors().size());
     for (int capacity = 128; capacity <= 1024 * 128; capacity *= 2) {
         Expr* expr = create_expr();
-        ASSERT_TRUE(expr != nullptr);
-        ASSERT_TRUE(expr->prepare(runtime_state(), *row_desc()).ok());
+        EXPECT_TRUE(expr != nullptr);
+        EXPECT_TRUE(expr->prepare(runtime_state(), *row_desc()).ok());
         int size = 1024 * 1024 / capacity;
         VectorizedRowBatch* vec_row_batches[size];
         srand(time(nullptr));
diff --git a/be/test/exprs/bitmap_function_test.cpp b/be/test/exprs/bitmap_function_test.cpp
index 34c3155551..78116bcbed 100644
--- a/be/test/exprs/bitmap_function_test.cpp
+++ b/be/test/exprs/bitmap_function_test.cpp
@@ -67,7 +67,7 @@ TEST_F(BitmapFunctionsTest, bitmap_empty) {
     BitmapValue bitmap;
     StringVal expected = convert_bitmap_to_string(ctx, bitmap);
 
-    ASSERT_EQ(expected, result);
+    EXPECT_EQ(expected, result);
 }
 
 TEST_F(BitmapFunctionsTest, to_bitmap) {
@@ -79,7 +79,7 @@ TEST_F(BitmapFunctionsTest, to_bitmap) {
         BitmapValue bitmap(val);
         StringVal expected = convert_bitmap_to_string(ctx, bitmap);
 
-        ASSERT_EQ(expected, result);
+        EXPECT_EQ(expected, result);
     }
 }
 
@@ -112,7 +112,7 @@ TEST_F(BitmapFunctionsTest, bitmap_union_int) {
 
     BigIntVal result = BitmapFunctions::bitmap_finalize(ctx, dst);
     BigIntVal expected(2);
-    ASSERT_EQ(expected, result);
+    EXPECT_EQ(expected, result);
 }
 
 TEST_F(BitmapFunctionsTest, bitmap_get_value) {
@@ -123,20 +123,20 @@ TEST_F(BitmapFunctionsTest, bitmap_get_value) {
 
     BigIntVal result = BitmapFunctions::bitmap_get_value(ctx, dst);
     BigIntVal expected(1);
-    ASSERT_EQ(expected, result);
+    EXPECT_EQ(expected, result);
 
     IntVal src2(1234567);
     BitmapFunctions::bitmap_update_int(ctx, src2, &dst);
 
     result = BitmapFunctions::bitmap_get_value(ctx, dst);
     expected.val = 2;
-    ASSERT_EQ(expected, result);
+    EXPECT_EQ(expected, result);
 
     BigIntVal finalize_result = BitmapFunctions::bitmap_finalize(ctx, dst);
-    ASSERT_EQ(result, finalize_result);
+    EXPECT_EQ(result, finalize_result);
 
     BigIntVal null_bitmap = BitmapFunctions::bitmap_get_value(ctx, StringVal::null());
-    ASSERT_EQ(BigIntVal(0), null_bitmap);
+    EXPECT_EQ(BigIntVal(0), null_bitmap);
 }
 
 TEST_F(BitmapFunctionsTest, bitmap_union) {
@@ -164,7 +164,7 @@ TEST_F(BitmapFunctionsTest, bitmap_union) {
 
     BigIntVal result = BitmapFunctions::bitmap_count(ctx, serialized);
     BigIntVal expected(2);
-    ASSERT_EQ(expected, result);
+    EXPECT_EQ(expected, result);
 }
 
 // test bitmap_intersect
@@ -186,7 +186,7 @@ TEST_F(BitmapFunctionsTest, bitmap_intersect) {
     StringVal serialized = BitmapFunctions::bitmap_serialize(ctx, dst);
     BigIntVal result = BitmapFunctions::bitmap_count(ctx, serialized);
     BigIntVal expected(2);
-    ASSERT_EQ(expected, result);
+    EXPECT_EQ(expected, result);
 }
 
 // test bitmap_intersect with null dst
@@ -197,7 +197,7 @@ TEST_F(BitmapFunctionsTest, bitmap_intersect_empty) {
     StringVal serialized = BitmapFunctions::bitmap_serialize(ctx, dst);
     BigIntVal result = BitmapFunctions::bitmap_count(ctx, serialized);
     BigIntVal expected(0);
-    ASSERT_EQ(expected, result);
+    EXPECT_EQ(expected, result);
 }
 
 TEST_F(BitmapFunctionsTest, bitmap_count) {
@@ -208,35 +208,35 @@ TEST_F(BitmapFunctionsTest, bitmap_count) {
 
     BigIntVal result = BitmapFunctions::bitmap_count(ctx, bitmap_str);
     BigIntVal expected(3);
-    ASSERT_EQ(expected, result);
+    EXPECT_EQ(expected, result);
 
     BigIntVal null_bitmap = BitmapFunctions::bitmap_count(ctx, StringVal::null());
-    ASSERT_EQ(BigIntVal(0), null_bitmap);
+    EXPECT_EQ(BigIntVal(0), null_bitmap);
 }
 
 TEST_F(BitmapFunctionsTest, bitmap_min) {
     BigIntVal result = BitmapFunctions::bitmap_min(ctx, StringVal::null());
-    ASSERT_TRUE(result.is_null);
+    EXPECT_TRUE(result.is_null);
 
     BitmapValue bitmap1;
     StringVal empty_str = convert_bitmap_to_string(ctx, bitmap1);
     result = BitmapFunctions::bitmap_min(ctx, empty_str);
-    ASSERT_TRUE(result.is_null);
+    EXPECT_TRUE(result.is_null);
 
     BitmapValue bitmap2 = BitmapValue(1024);
     StringVal bitmap_str = convert_bitmap_to_string(ctx, bitmap2);
     result = BitmapFunctions::bitmap_min(ctx, bitmap_str);
-    ASSERT_EQ(BigIntVal(1024), result);
+    EXPECT_EQ(BigIntVal(1024), result);
 
     BitmapValue bitmap3 = BitmapValue({1024, 1});
     bitmap_str = convert_bitmap_to_string(ctx, bitmap3);
     result = BitmapFunctions::bitmap_min(ctx, bitmap_str);
-    ASSERT_EQ(BigIntVal(1), result);
+    EXPECT_EQ(BigIntVal(1), result);
 
     BitmapValue bitmap4 = BitmapValue({1024, 3, 2});
     bitmap_str = convert_bitmap_to_string(ctx, bitmap4);
     result = BitmapFunctions::bitmap_min(ctx, bitmap_str);
-    ASSERT_EQ(BigIntVal(2), result);
+    EXPECT_EQ(BigIntVal(2), result);
 }
 
 // test intersect_count
@@ -272,10 +272,10 @@ void test_bitmap_intersect(FunctionContext* ctx, ValType key1, ValType key2) {
     intersect2.update(detail::Helper::get_val<ValType, ValueType>(key1), bitmap1);
     intersect2.update(detail::Helper::get_val<ValType, ValueType>(key2), bitmap2);
     StringVal expected = convert_bitmap_intersect_to_string(ctx, intersect2);
-    ASSERT_EQ(expected, intersect1);
+    EXPECT_EQ(expected, intersect1);
 
     BitmapIntersect<ValueType> intersect2_serde((char*)expected.ptr);
-    ASSERT_EQ(1, intersect2_serde.intersect_count());
+    EXPECT_EQ(1, intersect2_serde.intersect_count());
 
     StringVal dst2;
     BitmapFunctions::bitmap_intersect_init<ValueType, ValType>(ctx, &dst2);
@@ -283,7 +283,7 @@ void test_bitmap_intersect(FunctionContext* ctx, ValType key1, ValType key2) {
     BigIntVal result = BitmapFunctions::bitmap_intersect_finalize<ValueType>(ctx, dst2);
     BigIntVal expected_count(1);
 
-    ASSERT_EQ(expected_count, result);
+    EXPECT_EQ(expected_count, result);
 }
 
 TEST_F(BitmapFunctionsTest, test_bitmap_intersect) {
@@ -326,7 +326,7 @@ TEST_F(BitmapFunctionsTest, bitmap_or) {
     BigIntVal result = BitmapFunctions::bitmap_count(ctx, bitmap_str);
 
     BigIntVal expected(6);
-    ASSERT_EQ(expected, result);
+    EXPECT_EQ(expected, result);
 }
 
 TEST_F(BitmapFunctionsTest, bitmap_or_variable) {
@@ -334,7 +334,7 @@ TEST_F(BitmapFunctionsTest, bitmap_or_variable) {
         BitmapValue bitmap1({1024, 1, 2019});
         BitmapValue bitmap2({0, 33, std::numeric_limits<uint64_t>::min()});
         BitmapValue bitmap3({33, 5, std::numeric_limits<uint64_t>::max()});
-        BitmapValue bitmap_empty;  //test empty
+        BitmapValue bitmap_empty; //test empty
 
         StringVal bitmap_src1 = convert_bitmap_to_string(ctx, bitmap1);
         StringVal bitmap_src2 = convert_bitmap_to_string(ctx, bitmap2);
@@ -345,8 +345,8 @@ TEST_F(BitmapFunctionsTest, bitmap_or_variable) {
         StringVal bitmap_result = BitmapFunctions::bitmap_or(ctx, bitmap_src1, 3, bitmap_strs);
         BigIntVal result = BitmapFunctions::bitmap_count(ctx, bitmap_result);
 
-        BigIntVal expected(7);//0,1,5,33,1024,2019,18446744073709551615
-        ASSERT_EQ(expected, result);
+        BigIntVal expected(7); //0,1,5,33,1024,2019,18446744073709551615
+        EXPECT_EQ(expected, result);
     }
     {
         BitmapValue bitmap1({1024, 1, 2019});
@@ -362,7 +362,7 @@ TEST_F(BitmapFunctionsTest, bitmap_or_variable) {
         BigIntVal result = BitmapFunctions::bitmap_count(ctx, bitmap_result);
 
         BigIntVal expected(0);
-        ASSERT_EQ(expected, result);
+        EXPECT_EQ(expected, result);
     }
 }
 
@@ -377,7 +377,7 @@ TEST_F(BitmapFunctionsTest, bitmap_and) {
     BigIntVal result = BitmapFunctions::bitmap_count(ctx, bitmap_str);
 
     BigIntVal expected(1);
-    ASSERT_EQ(expected, result);
+    EXPECT_EQ(expected, result);
 }
 
 TEST_F(BitmapFunctionsTest, bitmap_and_variable) {
@@ -394,14 +394,14 @@ TEST_F(BitmapFunctionsTest, bitmap_and_variable) {
         StringVal bitmap_result = BitmapFunctions::bitmap_and(ctx, bitmap_src1, 2, bitmap_strs);
         BigIntVal result = BitmapFunctions::bitmap_count(ctx, bitmap_result);
 
-        BigIntVal expected(1);//0
-        ASSERT_EQ(expected, result);
+        BigIntVal expected(1); //0
+        EXPECT_EQ(expected, result);
     }
     {
         BitmapValue bitmap1({1024, 1, 2019});
         BitmapValue bitmap2({0, 33, std::numeric_limits<uint64_t>::min()});
         BitmapValue bitmap3({33, 5, std::numeric_limits<uint64_t>::max()});
-        BitmapValue bitmap_empty;  //test empty
+        BitmapValue bitmap_empty; //test empty
 
         StringVal bitmap_src1 = convert_bitmap_to_string(ctx, bitmap1);
         StringVal bitmap_src2 = convert_bitmap_to_string(ctx, bitmap2);
@@ -413,7 +413,7 @@ TEST_F(BitmapFunctionsTest, bitmap_and_variable) {
         BigIntVal result = BitmapFunctions::bitmap_count(ctx, bitmap_result);
 
         BigIntVal expected(0);
-        ASSERT_EQ(expected, result);
+        EXPECT_EQ(expected, result);
     }
     {
         BitmapValue bitmap1({1024, 1, 2019});
@@ -429,7 +429,7 @@ TEST_F(BitmapFunctionsTest, bitmap_and_variable) {
         BigIntVal result = BitmapFunctions::bitmap_count(ctx, bitmap_result);
 
         BigIntVal expected(0);
-        ASSERT_EQ(expected, result);
+        EXPECT_EQ(expected, result);
     }
 }
 
@@ -444,7 +444,7 @@ TEST_F(BitmapFunctionsTest, bitmap_xor) {
     BigIntVal result = BitmapFunctions::bitmap_count(ctx, bitmap_str);
 
     BigIntVal expected(4);
-    ASSERT_EQ(expected, result);
+    EXPECT_EQ(expected, result);
 }
 
 TEST_F(BitmapFunctionsTest, bitmap_xor_variable) {
@@ -460,15 +460,15 @@ TEST_F(BitmapFunctionsTest, bitmap_xor_variable) {
 
         StringVal bitmap_result = BitmapFunctions::bitmap_xor(ctx, bitmap_src1, 2, bitmap_strs);
         BigIntVal result = BitmapFunctions::bitmap_count(ctx, bitmap_result);
-        
+
         BigIntVal expected(5); //0,1,5,1024,18446744073709551615
-        ASSERT_EQ(expected, result);
+        EXPECT_EQ(expected, result);
     }
     {
         BitmapValue bitmap1({1024, 1, 2019});
         BitmapValue bitmap2({0, 33, std::numeric_limits<uint64_t>::min()});
         BitmapValue bitmap3({33, 5, std::numeric_limits<uint64_t>::max()});
-        BitmapValue bitmap_empty;  //test empty
+        BitmapValue bitmap_empty; //test empty
 
         StringVal bitmap_src1 = convert_bitmap_to_string(ctx, bitmap1);
         StringVal bitmap_src2 = convert_bitmap_to_string(ctx, bitmap2);
@@ -478,9 +478,9 @@ TEST_F(BitmapFunctionsTest, bitmap_xor_variable) {
 
         StringVal bitmap_result = BitmapFunctions::bitmap_xor(ctx, bitmap_src1, 3, bitmap_strs);
         BigIntVal result = BitmapFunctions::bitmap_count(ctx, bitmap_result);
-        
+
         BigIntVal expected(6); //0,1,5,1024,2019,18446744073709551615
-        ASSERT_EQ(expected, result);
+        EXPECT_EQ(expected, result);
     }
     {
         BitmapValue bitmap1({1024, 1, 2019});
@@ -496,7 +496,7 @@ TEST_F(BitmapFunctionsTest, bitmap_xor_variable) {
         BigIntVal result = BitmapFunctions::bitmap_count(ctx, bitmap_result);
 
         BigIntVal expected(0);
-        ASSERT_EQ(expected, result);
+        EXPECT_EQ(expected, result);
     }
 }
 
@@ -511,7 +511,7 @@ TEST_F(BitmapFunctionsTest, bitmap_xor_count) {
         BigIntVal result = BitmapFunctions::bitmap_xor_count(ctx, bitmap_src, bitmap_dst);
 
         BigIntVal expected(4);
-        ASSERT_EQ(expected.val, result.val);
+        EXPECT_EQ(expected.val, result.val);
     }
     {
         BitmapValue bitmap1({1, 2, 3});
@@ -523,7 +523,7 @@ TEST_F(BitmapFunctionsTest, bitmap_xor_count) {
         BigIntVal result = BitmapFunctions::bitmap_xor_count(ctx, bitmap_src, bitmap_dst);
 
         BigIntVal expected(0);
-        ASSERT_EQ(expected.val, result.val);
+        EXPECT_EQ(expected.val, result.val);
     }
     {
         BitmapValue bitmap1({1, 2, 3});
@@ -535,7 +535,7 @@ TEST_F(BitmapFunctionsTest, bitmap_xor_count) {
         BigIntVal result = BitmapFunctions::bitmap_xor_count(ctx, bitmap_src, bitmap_dst);
 
         BigIntVal expected(6);
-        ASSERT_EQ(expected.val, result.val);
+        EXPECT_EQ(expected.val, result.val);
     }
 }
 
@@ -551,15 +551,15 @@ TEST_F(BitmapFunctionsTest, bitmap_xor_count_variable) {
         StringVal bitmap_strs[2] = {bitmap_src2, bitmap_src3};
 
         BigIntVal result = BitmapFunctions::bitmap_xor_count(ctx, bitmap_src1, 2, bitmap_strs);
-        
+
         BigIntVal expected(5); //0,1,5,1024,18446744073709551615
-        ASSERT_EQ(expected, result);
+        EXPECT_EQ(expected, result);
     }
     {
         BitmapValue bitmap1({1024, 1, 2019});
         BitmapValue bitmap2({0, 33, std::numeric_limits<uint64_t>::min()});
         BitmapValue bitmap3({33, 5, std::numeric_limits<uint64_t>::max()});
-        BitmapValue bitmap_empty;  //test empty
+        BitmapValue bitmap_empty; //test empty
 
         StringVal bitmap_src1 = convert_bitmap_to_string(ctx, bitmap1);
         StringVal bitmap_src2 = convert_bitmap_to_string(ctx, bitmap2);
@@ -568,9 +568,9 @@ TEST_F(BitmapFunctionsTest, bitmap_xor_count_variable) {
         StringVal bitmap_strs[3] = {bitmap_src2, bitmap_src3, bitmap_src4};
 
         BigIntVal result = BitmapFunctions::bitmap_xor_count(ctx, bitmap_src1, 3, bitmap_strs);
-        
+
         BigIntVal expected(6); //0,1,5,1024,2019,18446744073709551615
-        ASSERT_EQ(expected, result);
+        EXPECT_EQ(expected, result);
     }
     {
         BitmapValue bitmap1({1024, 1, 2019});
@@ -583,7 +583,7 @@ TEST_F(BitmapFunctionsTest, bitmap_xor_count_variable) {
         StringVal bitmap_strs[3] = {bitmap_src2, bitmap_src3, StringVal::null()}; //test null
 
         BigIntVal result = BitmapFunctions::bitmap_xor_count(ctx, bitmap_src1, 3, bitmap_strs);
-        ASSERT_EQ(BigIntVal::null(), result);
+        EXPECT_EQ(BigIntVal::null(), result);
     }
 }
 
@@ -598,7 +598,7 @@ TEST_F(BitmapFunctionsTest, bitmap_xor_count_64) {
         BigIntVal result = BitmapFunctions::bitmap_xor_count(ctx, bitmap_src, bitmap_dst);
 
         BigIntVal expected(4);
-        ASSERT_EQ(expected.val, result.val);
+        EXPECT_EQ(expected.val, result.val);
     }
     {
         BitmapValue bitmap1({14123400000000000501ull, 2, 1498760000000000503ull});
@@ -610,7 +610,7 @@ TEST_F(BitmapFunctionsTest, bitmap_xor_count_64) {
         BigIntVal result = BitmapFunctions::bitmap_xor_count(ctx, bitmap_src, bitmap_dst);
 
         BigIntVal expected(0);
-        ASSERT_EQ(expected.val, result.val);
+        EXPECT_EQ(expected.val, result.val);
     }
     {
         BitmapValue bitmap1({15000000000000000501ull, 2, 1200000000000000503ull});
@@ -622,7 +622,7 @@ TEST_F(BitmapFunctionsTest, bitmap_xor_count_64) {
         BigIntVal result = BitmapFunctions::bitmap_xor_count(ctx, bitmap_src, bitmap_dst);
 
         BigIntVal expected(6);
-        ASSERT_EQ(expected.val, result.val);
+        EXPECT_EQ(expected.val, result.val);
     }
 }
 
@@ -632,24 +632,24 @@ TEST_F(BitmapFunctionsTest, bitmap_and_count) {
     StringVal bitmap_src1 = convert_bitmap_to_string(ctx, bitmap1);
     StringVal bitmap_src2 = convert_bitmap_to_string(ctx, bitmap2);
     BigIntVal result = BitmapFunctions::bitmap_and_count(ctx, bitmap_src1, bitmap_src2);
-    ASSERT_EQ(0, result.val);
+    EXPECT_EQ(0, result.val);
 
     result = BitmapFunctions::bitmap_and_count(ctx, bitmap_src1, StringVal::null());
-    ASSERT_EQ(0, result.val);
+    EXPECT_EQ(0, result.val);
 
     bitmap1 = BitmapValue({0, 1, 2, std::numeric_limits<uint64_t>::min()});
     bitmap2 = BitmapValue({0, 1, 2, std::numeric_limits<uint64_t>::max()});
     bitmap_src1 = convert_bitmap_to_string(ctx, bitmap1);
     bitmap_src2 = convert_bitmap_to_string(ctx, bitmap2);
     result = BitmapFunctions::bitmap_and_count(ctx, bitmap_src1, bitmap_src2);
-    ASSERT_EQ(3, result.val);
+    EXPECT_EQ(3, result.val);
 
     bitmap1 = BitmapValue({1, 2, 3});
     bitmap2 = BitmapValue({3, 4, 5});
     bitmap_src1 = convert_bitmap_to_string(ctx, bitmap1);
     bitmap_src2 = convert_bitmap_to_string(ctx, bitmap2);
     result = BitmapFunctions::bitmap_and_count(ctx, bitmap_src1, bitmap_src2);
-    ASSERT_EQ(1, result.val);
+    EXPECT_EQ(1, result.val);
 }
 
 TEST_F(BitmapFunctionsTest, bitmap_and_count_variable) {
@@ -664,14 +664,14 @@ TEST_F(BitmapFunctionsTest, bitmap_and_count_variable) {
         StringVal bitmap_strs[2] = {bitmap_src2, bitmap_src3};
 
         BigIntVal result = BitmapFunctions::bitmap_and_count(ctx, bitmap_src1, 2, bitmap_strs);
-        BigIntVal expected(1);//0
-        ASSERT_EQ(expected, result);
+        BigIntVal expected(1); //0
+        EXPECT_EQ(expected, result);
     }
     {
         BitmapValue bitmap1({1024, 1, 2019});
         BitmapValue bitmap2({0, 33, std::numeric_limits<uint64_t>::min()});
         BitmapValue bitmap3({33, 5, std::numeric_limits<uint64_t>::max()});
-        BitmapValue bitmap_empty;  //test empty
+        BitmapValue bitmap_empty; //test empty
 
         StringVal bitmap_src1 = convert_bitmap_to_string(ctx, bitmap1);
         StringVal bitmap_src2 = convert_bitmap_to_string(ctx, bitmap2);
@@ -681,7 +681,7 @@ TEST_F(BitmapFunctionsTest, bitmap_and_count_variable) {
 
         BigIntVal result = BitmapFunctions::bitmap_and_count(ctx, bitmap_src1, 3, bitmap_strs);
         BigIntVal expected(0);
-        ASSERT_EQ(expected, result);
+        EXPECT_EQ(expected, result);
     }
     {
         BitmapValue bitmap1({1024, 1, 2019});
@@ -694,7 +694,7 @@ TEST_F(BitmapFunctionsTest, bitmap_and_count_variable) {
         StringVal bitmap_strs[3] = {bitmap_src2, bitmap_src3, StringVal::null()}; //test null
 
         BigIntVal result = BitmapFunctions::bitmap_and_count(ctx, bitmap_src1, 3, bitmap_strs);
-        ASSERT_EQ(BigIntVal::null(), result);
+        EXPECT_EQ(BigIntVal::null(), result);
     }
 }
 
@@ -704,10 +704,10 @@ TEST_F(BitmapFunctionsTest, bitmap_and_count_64) {
     StringVal bitmap_src1 = convert_bitmap_to_string(ctx, bitmap1);
     StringVal bitmap_src2 = convert_bitmap_to_string(ctx, bitmap2);
     BigIntVal result = BitmapFunctions::bitmap_and_count(ctx, bitmap_src1, bitmap_src2);
-    ASSERT_EQ(0, result.val);
+    EXPECT_EQ(0, result.val);
 
     result = BitmapFunctions::bitmap_and_count(ctx, bitmap_src1, StringVal::null());
-    ASSERT_EQ(0, result.val);
+    EXPECT_EQ(0, result.val);
 
     bitmap1 = BitmapValue({11598000000000000501ull, 2, 1923400000000000503ull,
                            std::numeric_limits<uint64_t>::min()});
@@ -716,14 +716,14 @@ TEST_F(BitmapFunctionsTest, bitmap_and_count_64) {
     bitmap_src1 = convert_bitmap_to_string(ctx, bitmap1);
     bitmap_src2 = convert_bitmap_to_string(ctx, bitmap2);
     result = BitmapFunctions::bitmap_and_count(ctx, bitmap_src1, bitmap_src2);
-    ASSERT_EQ(3, result.val);
+    EXPECT_EQ(3, result.val);
 
     bitmap1 = BitmapValue({15555500000000000501ull, 2, 1400000000000000503ull});
     bitmap2 = BitmapValue({1400000000000000503ull, 5, 1400324000000000506ull});
     bitmap_src1 = convert_bitmap_to_string(ctx, bitmap1);
     bitmap_src2 = convert_bitmap_to_string(ctx, bitmap2);
     result = BitmapFunctions::bitmap_and_count(ctx, bitmap_src1, bitmap_src2);
-    ASSERT_EQ(1, result.val);
+    EXPECT_EQ(1, result.val);
 }
 
 TEST_F(BitmapFunctionsTest, bitmap_or_count) {
@@ -732,24 +732,24 @@ TEST_F(BitmapFunctionsTest, bitmap_or_count) {
     StringVal bitmap_src1 = convert_bitmap_to_string(ctx, bitmap1);
     StringVal bitmap_src2 = convert_bitmap_to_string(ctx, bitmap2);
     BigIntVal result = BitmapFunctions::bitmap_or_count(ctx, bitmap_src1, bitmap_src2);
-    ASSERT_EQ(3, result.val);
+    EXPECT_EQ(3, result.val);
 
     result = BitmapFunctions::bitmap_or_count(ctx, bitmap_src1, StringVal::null());
-    ASSERT_EQ(0, result.val);
+    EXPECT_EQ(0, result.val);
 
     bitmap1 = BitmapValue({0, 1, 2, std::numeric_limits<uint64_t>::min()});
     bitmap2 = BitmapValue({0, 1, 2, std::numeric_limits<uint64_t>::max()});
     bitmap_src1 = convert_bitmap_to_string(ctx, bitmap1);
... 42129 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org