<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 4.10 使用測試固件 **NOTE**:*此示例代碼可以在 https://github.com/dev-cafe/cmake-cookbook/tree/v1.0/chapter-04/recipe-10 中找到。該示例在CMake 3.5版(或更高版本)中是有效的,并且已經在GNU/Linux、macOS和Windows上進行過測試。* 這個示例的靈感來自于Craig Scott,我們建議讀者也參考相應的博客文章來了解更多的背景知識,https://crascit.com/2016/10/18/test-fixtures-withcmake-ctest/ ,此示例的動機是演示如何使用測試固件。這對于更復雜的測試非常有用,這些測試需要在測試運行前進行設置,以及在測試完成后執行清理操作(例如:創建示例數據庫、設置連接、斷開連接、清理測試數據庫等等)。我們需要運行一個設置或清理操作的測試,并能夠以一種可預測和健壯的方式自動觸發這些步驟,而不需要引入代碼重復。這些設置和清理步驟可以委托給測試框架(例如Google Test或Catch2),我們在這里將演示如何在CMake級別實現測試固件。 ## 準備工作 我們將準備4個Python腳本,并將它們放在`test`目錄下:`setup.py`、`features-a.py`、`features-b.py`和`clean-up.py`。 ## 具體實施 我們從`CMakeLists.txt`結構開始,附加一些步驟如下: 1. 基礎CMake語句: ```cmake # set minimum cmake version cmake_minimum_required(VERSION 3.5 FATAL_ERROR) # project name project(recipe-10 LANGUAGES NONE) # detect python find_package(PythonInterp REQUIRED) # define tests enable_testing() ``` 2. 然后,定義了4個測試步驟,并將它們綁定到一個固件上: ```cmake add_test( NAME setup COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/setup.py ) set_tests_properties( setup PROPERTIES FIXTURES_SETUP my-fixture ) add_test( NAME feature-a COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/feature-a.py ) add_test( NAME feature-b COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/feature-b.py ) set_tests_properties( feature-a feature-b PROPERTIES FIXTURES_REQUIRED my-fixture ) add_test( NAME cleanup COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/cleanup.py ) set_tests_properties( cleanup PROPERTIES FIXTURES_CLEANUP my-fixture ) ``` 3. 運行整個集合,如下面的輸出所示: ```shell $ mkdir -p build $ cd build $ cmake .. $ ctest Start 1: setup 1/4 Test #1: setup ............................ Passed 0.01 sec Start 2: feature-a 2/4 Test #2: feature-a ........................ Passed 0.01 sec Start 3: feature-b 3/4 Test #3: feature-b ........................ Passed 0.00 sec Start 4: cleanup 4/4 Test #4: cleanup .......................... Passed 0.01 sec 100% tests passed, 0 tests failed out of 4 ``` 4. 然而,當我們試圖單獨運行測試特性時。它正確地調用設置步驟和清理步驟: ```shell $ ctest -R feature-a Start 1: setup 1/3 Test #1: setup ............................ Passed 0.01 sec Start 2: feature-a 2/3 Test #2: feature-a ........................ Passed 0.00 sec Start 4: cleanup 3/3 Test #4: cleanup .......................... Passed 0.01 sec 100% tests passed, 0 tests failed out of 3 ``` ## 工作原理 在本例中,我們定義了一個文本固件,并將其稱為`my-fixture`。我們為安裝測試提供了`FIXTURES_SETUP`屬性,并為清理測試了`FIXTURES_CLEANUP`屬性,并且使用`FIXTURES_REQUIRED`,我們確保測試`feature-a`和`feature-b`都需要安裝和清理步驟才能運行。將它們綁定在一起,可以確保在定義良好的狀態下,進入和離開相應的步驟。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看