2016-12-16 17 views
0

私は組み込みアプリケーション用の機能を開発しており、Ceedling(これはUnityテストフレームワークの上に構築されています)を使ってテストしています。私が持っている問題は、Ceedlingがユニットテストファイルをコンパイル/リンクしていないCソースファイルの機能を使う必要があることです。 ceedlingがドキュメントによると Ceedlingがピックアップできないソースファイルを手動で指定するにはどうすればよいですか?

ceedlingが各テスト ファイルに含まれているの#includeリストを経由して、個々の テスト実行ファイルにコンパイルとリンクするファイルを知っています。コンフィグレーションされた検索ディレクトリ内のCソースファイルのうち、 がテストファイルに含まれるヘッダファイルに対応する場合は、 がコンパイルされ、結果のテストフィクスチャ実行ファイルにリンクされます。

問題は、私がembOSのRTOS機能へのアクセスを得るために、私のユニットテストでのヘッダファイル「RTOS.h」を含むてるということですが、これらの機能は、「RTOSInit.c」と「os7m_tl__dp.aで定義されていますこのドキュメントでは、ユニットテストコードで#include "RTOS.h"と表示された場合にのみ、Ceedlingは "RTOS.c"を探します。

私が探しているのは、テストランナー実行ファイルを生成するときに、これらの追加ファイルをコンパイルしてリンクする必要があることを手動で指定する方法です。これはCeedlingの基本的な要件のようですが、ドキュメントからこれを行う方法はわかりません。

また、Ceedling Githubサイトにはraised this as an issueがあります。参考

は、(ceedlingがで使用される)私の現在の「project.yml」ファイルは以下のとおりである:

:project: 
    :use_exceptions: FALSE 
    :use_test_preprocessor: FALSE 
    :use_auxiliary_dependencies: TRUE 
    :build_root: build 
    :release_build: FALSE 
    :test_file_prefix: test_ 

:environment: 
    - :path: 
    - 'C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin' 
    - 'C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\common\bin' 
    - #{ENV['PATH']} 

:extension: 
    :executable: .out 

:paths: 
    :test: 
    - +:test/** 
    - -:test/support 
    :source: 
    - src/main/c/** 
    - src/main/include/** 
    - src/main/resources/** 
    :support: 
    - test/support 

:defines: 
    :commmon: &common_defines [] 
    :test: 
    - *common_defines 
    - TEST 
    :test_preprocess: 
    - *common_defines 
    - TEST 

:cmock: 
    :mock_prefix: mock_ 
    :when_no_prototypes: :warn 
    :enforce_strict_ordering: TRUE 
    :plugins: 
    - :ignore 
    - :callback 
    :treat_as: 
    uint8: HEX8 
    uint16: HEX16 
    uint32: UINT32 
    int8:  INT8 
    bool:  UINT8 

:tools: 
    :test_compiler: 
    :executable: iccarm 
    :name: 'IAR test compiler' 
    :arguments: 
     - -D _DLIB_FILE_DESCRIPTOR=1 
     - --debug 
     - --endian=little 
     - --cpu=Cortex-M3 
     - -e 
     - --fpu=None 
     - -Ol 
     - --preprocess "${3}" 
     - --dlib_config "C:/Program Files (x86)/IAR Systems/Embedded Workbench 6.5/arm/INC/c/DLib_Config_Normal.h" 
     - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE 
     - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR 
     - -o "${2}" 
     - --diag_suppress=Pa050 
     - '"${1}"' 

    :test_linker: 
    :executable: ilinkarm 
    :name: 'IAR test linker' 
    :arguments: 
     - --vfe 
     - --redirect _Printf=_PrintfFull 
     - --redirect _Scanf=_ScanfFull 
     - --semihosting 
     - --config "C:/Program Files (x86)/IAR Systems/Embedded Workbench 6.5/arm/config/generic_cortex.icf" 
     - --map "${3}" 
     - -o "${2}" 
     - '"${1}"' 

    :test_fixture: 
    :executable: cspybat 
    :name: 'CSpyBat test runner' 
    :arguments: 
     - '"C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armproc.dll"' 
     - '"C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armsim2.dll"' 
     - '"${1}"' 
     - --plugin "C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.5\arm\bin\armbat.dll" 
     - --backend -B 
     - --endian=little 
     - --cpu=Cortex-M3 
     - --fpu=None 
     - --semihosting 

:plugins: 
    :load_paths: 
    - vendor/ceedling/plugins 
    :enabled: 
    - stdout_pretty_tests_report 
    - module_generator 
... 
+0

ただシンボリックリンクを作成して、それが –

+0

@iharobを努め、あなたがそれで何を意味するかについて明確にすることはできますか? '#include" RTOS.h "'が見つかると、シードリング図に "RTOSInit.c"と "os7m_tl__dp.a"を含めるためにシンボリックリンクを使用するにはどうすればいいですか? – Tagc

+0

ああ、窓の上にいる。申し訳ありませんが、そこではうまくいかないでしょう。 –

答えて

0

IはNOS RTOSのテスト中に同じ問題を抱えていた、対応するコンパイルがceedlingを強制するために、空のヘッダファイルを使用しましたソースファイル。幸いにも、この問題を解決する新しいマクロがUnityに追加されました。ちょうどあなたのテストファイルの先頭に似た何かを追加:

TEST_FILE("source_file_to_compile.c") 
関連する問題