国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

測試驅動的嵌入式開發(fā) 002:VSCode + CMake + Unity 環(huán)境搭建

這篇具有很好參考價值的文章主要介紹了測試驅動的嵌入式開發(fā) 002:VSCode + CMake + Unity 環(huán)境搭建。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文是對《測試驅動的嵌入式 C 語言開發(fā)》第二章的實踐。

搭建 VSCode

這部分參考博文《基于Windows 的 VS Code C/C++ 編譯環(huán)境搭建》。

安裝 CMake

安裝 CMake ,在官網(wǎng)下載最新安裝包。安裝時選擇對所有用戶添加 CMake 到系統(tǒng) PATH。

安裝 VSCode 插件

安裝以下插件:

  • CMake:VSCode 的 CMake 語言支持插件
  • CMake Tools:對插件 CMake 的擴展支持

下載 Unity

Unity 是一個單元測試框架。目標是保持它的小而實用。Unity 測試框架的核心是三個文件:一個 C 文件和幾個頭文件。
這些組合起來提供功能和宏以使測試更容易。

Unity 被設計為跨平臺的。
它努力堅持 C 標準,同時仍為許多違反規(guī)則的嵌入式 C 編譯器提供支持。
Unity 已與許多編譯器一起使用,包括 GCC、IAR、Clang、Green Hills、Microchip 和 MS Visual Studio。

可在在Github拉取或下載源代碼。

使用 Unity

  1. 創(chuàng)建一個文件夾,這里命名為 TDDUnityExample 。
    文件夾內保存你的項目源文件、Unity 測試框架源文件、測試用例等,而現(xiàn)在,它只是一個空文件夾。
  2. TDDUnityExample 文件夾下再創(chuàng)建一個文件夾,這里命名為 Unity 。
    這個文件夾內存放 Unity 測試框架源文件:在從下載的 Unity源碼中將 srcextras 兩個文件夾拷貝到 Unity 文件夾下。
  3. TDDUnityExample 文件夾下再創(chuàng)建一個文件夾,這里命名為 tests 。
    這個文件夾內存放所有測試用例。我們以測試 sprintf_s 函數(shù)為例。
    在這個文件夾中創(chuàng)建 sprintf_s_test.c 、sprintf_s_runner.call_test.c 三個文件。其中, sprintf_s_test.c 內容為:
#include <stdio.h>
#include "unity_fixture.h"

TEST_GROUP(sprintf);

TEST_SETUP(sprintf)
{}

TEST_TEAR_DOWN(sprintf)
{}

TEST(sprintf, NoFormatOperations)
{
    char output[5];

    TEST_ASSERT_EQUAL(4 , sprintf_s(output,4, "hey"));
    TEST_ASSERT_EQUAL_STRING("hey", output);
}

TEST(sprintf, FormatOperations)
{
    char output[20];
    TEST_ASSERT_EQUAL(12, sprintf_s(output, 20, "Hello %s\n", "World"));
}

sprintf_s_runner.c 內容為:

#include "unity_fixture.h"

TEST_GROUP_RUNNER(sprintf)
{
    RUN_TEST_CASE(sprintf, NoFormatOperations);
    RUN_TEST_CASE(sprintf, FormatOperations);
}

all_test.c 內容為:

#include "unity_fixture.h"

static void RunAllTests(void)
{
    RUN_TEST_GROUP(sprintf);
}

int main(int argc, const char *argv[])
{
    return UnityMain(argc, argv, RunAllTests);
}
  1. TDDUnityExample 文件夾下創(chuàng)建名為 CMakeLists.txt 的文件,該文件給 CMake使用,文件內容為:
# 最低CMake版本要求
cmake_minimum_required(VERSION 3.5.1)

#將src工作目錄的絕對路徑賦給SRC_DIR
file(GLOB_RECURSE APP_SRC_DIR "tests/*.c")
file(GLOB_RECURSE UNITY_SRC_LIST "Unity/*.c")

# 項目名稱
project(TDD_test)

# 頭文件路徑
include_directories("tests")
include_directories("Unity/src")
include_directories("Unity/extras/fixture/src")
include_directories("Unity/extras/memory/src")

#將所有源文件生成一個可執(zhí)行文件
add_executable(TDD_test  ${APP_SRC_DIR} ${UNITY_SRC_LIST})
  1. 使用 VSCode 打開 TDDCppUTestExample 文件夾。單擊下圖所示紅框中的三角形。
    測試驅動的嵌入式開發(fā) 002:VSCode + CMake + Unity 環(huán)境搭建
    第一次執(zhí)行會彈出選擇編譯套件的選項,這里選擇 GCC
    測試驅動的嵌入式開發(fā) 002:VSCode + CMake + Unity 環(huán)境搭建
    選擇完畢,VSCode 會調用 CMake 根據(jù) CMakeLists.txt 文件內容生成 Makefile 文件,然后調用指定編譯器完成源代碼編譯,如果生成可執(zhí)行文件,則執(zhí)行可執(zhí)行文件。 Makefile 文件以及編譯生成文件會保存在 TDDUnityExample 文件夾下的 build 文件夾下,該文件夾由 VSCode 自動創(chuàng)建。
[proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=C:\msys64\mingw64\bin\gcc.exe -DCMAKE_CXX_COMPILER:FILEPATH=C:\msys64\mingw64\bin\g++.exe -Sc:/Users/jssh/Desktop/TDDUnityExample -Bc:/Users/jssh/Desktop/TDDUnityExample/build -G "Unix Makefiles"
[cmake] Not searching for unused variables given on the command line.
[cmake] -- The C compiler identification is GNU 12.2.0
[cmake] -- The CXX compiler identification is GNU 12.2.0
[cmake] -- Detecting C compiler ABI info
[cmake] -- Detecting C compiler ABI info - done
[cmake] -- Check for working C compiler: C:/msys64/mingw64/bin/gcc.exe - skipped
[cmake] -- Detecting C compile features
[cmake] -- Detecting C compile features - done
[cmake] -- Detecting CXX compiler ABI info
[cmake] -- Detecting CXX compiler ABI info - done
[cmake] -- Check for working CXX compiler: C:/msys64/mingw64/bin/g++.exe - skipped
[cmake] -- Detecting CXX compile features
[cmake] -- Detecting CXX compile features - done
[cmake] -- Configuring done
[cmake] -- Generating done
[cmake] -- Build files have been written to: C:/Users/jssh/Desktop/TDDUnityExample/build
[main] Building folder: TDDUnityExample TDD_test
[build] Starting build
[proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --build c:/Users/jssh/Desktop/TDDUnityExample/build --config Debug --target TDD_test -j 14 --
[build] [ 14%] [32mBuilding C object CMakeFiles/TDD_test.dir/tests/sprintf_s_runner.c.obj[0m
[build] [ 42%] [32mBuilding C object CMakeFiles/TDD_test.dir/tests/sprintf_s_test.c.obj[0m
[build] [ 42%] [32mBuilding C object CMakeFiles/TDD_test.dir/tests/all_teses.c.obj[0m
[build] [ 71%] [32mBuilding C object CMakeFiles/TDD_test.dir/Unity/extras/memory/src/unity_memory.c.obj[0m
[build] [ 71%] [32mBuilding C object CMakeFiles/TDD_test.dir/Unity/extras/fixture/src/unity_fixture.c.obj[0m
[build] [ 85%] [32mBuilding C object CMakeFiles/TDD_test.dir/Unity/src/unity.c.obj[0m
[build] [100%] [32m[1mLinking C executable TDD_test.exe[0m
[build] [100%] Built target TDD_test
[build] Build finished with exit code 0
  1. 終端 界面中,可以看到程序執(zhí)行結果,也就是測試輸出結果。
    測試驅動的嵌入式開發(fā) 002:VSCode + CMake + Unity 環(huán)境搭建

結束語

如果你想使用測試驅動開發(fā),又對本文舉例內容疑惑,可能是因為你還沒看過《測試驅動的嵌入式 C 語言開發(fā)》這本書。
不要被書名欺騙到,這絕不僅僅只是教授你測試驅動方法的,它還教授 C 程序設計模式,如何改善設計、如何寫出干凈利索的代碼,如何封裝和模塊化等等。

另外,本書是這么多年來我看過的嵌入式翻譯書籍中,翻譯最準確最清晰的一本。一股清流,值得大書特書。





讀后有收獲,資助博主養(yǎng)娃 - 千金難買知識,但可以買好多奶粉 (〃‘▽’〃)
測試驅動的嵌入式開發(fā) 002:VSCode + CMake + Unity 環(huán)境搭建


文章來源地址http://www.zghlxwxcb.cn/news/detail-417072.html

到了這里,關于測試驅動的嵌入式開發(fā) 002:VSCode + CMake + Unity 環(huán)境搭建的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 嵌入式LinuxLED驅動開發(fā)實驗

    嵌入式LinuxLED驅動開發(fā)實驗

    我們在裸機實驗的時候,都是通過配置底層的寄存器來進行點亮LED燈的操作的。我們現(xiàn)在還沒有學習到設備樹的相關知識,所以,我們也是通過在字符設備驅動框架的基礎上來配置底層寄存器來實現(xiàn)LED燈的點亮,但是,與之前不同的是,在Linux系統(tǒng)中會存在地址映射的方式,

    2024年02月15日
    瀏覽(24)
  • 嵌入式內核及驅動開發(fā)高級

    嵌入式內核及驅動開發(fā)高級

    僅devfs,導致開發(fā)不方便以及一些功能難以支持: 熱插拔 不支持一些針對所有設備的統(tǒng)一操作(如電源管理) 不能自動mknod 用戶查看不了設備信息 設備信息硬編碼,導致驅動代碼通用性差,即沒有分離設備和驅動 uevent機制:sysfs + uevent + udevd(上層app) sysfs用途:(類似于

    2024年02月16日
    瀏覽(37)
  • 全志V3S嵌入式驅動開發(fā)(驅動開發(fā)準備)

    全志V3S嵌入式驅動開發(fā)(驅動開發(fā)準備)

    【 聲明:版權所有,歡迎轉載,請勿用于商業(yè)用途。 聯(lián)系信箱:feixiaoxing @163.com】 ? ? ? ? 之前的文章都是教大家怎么搭建環(huán)境、看原理圖、編譯內核和根文件系統(tǒng)、做鏡像,直到現(xiàn)在才進入驅動開發(fā)的主題。 畢竟整個專欄的目的,還是希望大家能夠學會驅動外部硬件。

    2024年02月13日
    瀏覽(38)
  • 嵌入式驅動開發(fā)需要會哪些技能?

    嵌入式驅動開發(fā)是指在嵌入式系統(tǒng)中編寫驅動程序,實現(xiàn)設備與計算機之間的通信。嵌入式驅動開發(fā)是指編寫設備驅動程序,實現(xiàn)設備與計算機之間的通信。 以下是一些嵌入式驅動開發(fā)的具體操作方法:? 1)了解硬件設備結構: 在進行嵌入式驅動開發(fā)之前,需要對所使用的硬

    2024年01月25日
    瀏覽(27)
  • 嵌入式Linux開發(fā)-USB驅動

    嵌入式Linux開發(fā)-USB驅動

    哥們馬上就要被裁了,總得整理一下技術方面的積累,準備開始下一輪的面試和找工作之旅了。。。。 通用串行總線(USB)是主機和外圍設備之間的一種連接。 從拓撲上來看,是一顆由幾個點對點的連接構建而成的樹。這些連接是連接設備和集線器(hub)的四線電纜(底線、電源線

    2024年02月20日
    瀏覽(27)
  • 嵌入式Linux驅動開發(fā)之點燈

    嵌入式Linux驅動開發(fā)之點燈

    ? 使用驅動開發(fā)的方式點亮一個LED燈??纯磧烧哂猩秴^(qū)別不? 首先查看原理圖,看看我們的板子上的LED等接在哪一個IO口上面。 好了,看原理圖我們知道LED燈接在芯片的GPIO1的第三個引腳上面,也就是GPIO1_IO03。 先掌握三個名詞 CCM: Clock Controller Module (時鐘控制模塊) IOMUXC : I

    2024年02月01日
    瀏覽(29)
  • 嵌入式:驅動開發(fā) Day4

    嵌入式:驅動開發(fā) Day4

    驅動程序:myled.c 應用程序:test.c 頭文件:head.h

    2024年02月09日
    瀏覽(23)
  • 嵌入式Linux驅動開發(fā) 04:基于設備樹的驅動開發(fā)

    嵌入式Linux驅動開發(fā) 04:基于設備樹的驅動開發(fā)

    前面文章 《嵌入式Linux驅動開發(fā) 03:平臺(platform)總線驅動模型》 引入了資源和驅動分離的概念,這篇文章將在前面基礎上更進一步,引入設備樹的概念。 在平臺總線驅動模型中資源和驅動已經從邏輯上和代碼組織上進行了分離,但每次調整資源還是會涉及到內核,所以現(xiàn)

    2024年02月16日
    瀏覽(27)
  • 【嵌入式Linux驅動】驅動開發(fā)調試相關的關系記錄

    【嵌入式Linux驅動】驅動開發(fā)調試相關的關系記錄

    https://www.processon.com/mindmap/64537772b546c76a2f37bd2f

    2024年02月02日
    瀏覽(27)
  • 嵌入式Linux驅動開發(fā)——常見框架梳理

    嵌入式Linux驅動開發(fā)——常見框架梳理

    本文主要介紹了Linux驅動開發(fā)中一些常用的驅動框架,platform、input、iic、spi等,硬件平臺使用的是正點原子的imx6ull開發(fā)板。 不管什么框架最后都是要追溯到配置IO的電氣屬性和復用功能 如果要使用外部中斷,設備樹節(jié)點中還需添加相關信息,什么邊沿觸發(fā) 1:module_init和mod

    2024年02月15日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包