Running and creating unit test for nordic application

Hello. 

I am trying to learn how to implement unit tests for embedded c-application. I created simple example about my problem and I am having hard time actually running the tests using native sim or nrf9160dk as target. I am following these instructions from nordic: https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/test_and_optimize/testing_unity_cmock.html 

I have installed these tools: Cmock,Unity & Ruby.

Everytime I try to run this command 'west build -b native_posix -t run', I get this output: 

```

PS C:\Users\OMISTAJA\Projekt\Testeri\Unit\src\test> west build -b native_posix -t run
usage: west [-h] [-z ZEPHYR_BASE] [-v] [-V] <command> ...
west: error: argument <command>: invalid choice: 'build' (choose from 'init', 'update', 'list', 'manifest', 'diff', 'status', 'forall', 'help', 'config', 'topdir', 'selfupdate')

```

I am using nrf connect from vscode.

0160.Unit.zip

Parents
  • Hello,

    Where are you running this command from? That is an error that appears when your environmental variables are set incorrectly.

    If your SDK version is set corrently in VS Code, then please try to open a new terminal of type "nRF Connect" and it should set up the environmental variables accordingly.

    You can also modify your ZEPHYR_BASE environmental variable manually to point to the path of the "zephyr" folder in NCS.

    Best regards,

    Michal

  • Hello,
    Thanks for the reply. I was originally  running the command from powershell.
    Now I switched to nrf Connect and got this error: 

    ´´´

    PS C:\Users\OMISTAJA\Projekt\Testeri\Unit\src\test> west build -b native_posix -t run
    -- west build: running target run
    ninja: error: loading 'build.ninja': No such file or directory .

    FATAL ERROR: command exited with status 1: 'C:\ncs\toolchains\v2.3.0\opt\bin\cmake.EXE' --build 'C:\Users\OMISTAJA\Projekt\Testeri\Unit\src\test\build' --target run

    ´´´

    This looks like Cmake error. I am complete beginner when it comes to cmake, any suggestions what my cmakelist.txt file is missing?

    My SDK version is 2.3

    0640.Unit.zip

    I made slight changes:
    added Cmakelistst.txt to test directory
    created src folder and moved unity and tests module files there.

    Thanks in advance.

  • Could you try adding the -v (verbose) option to your build and show me what happens?

    Best regards,

    Michal

  • Running command with -v gives this output:

    ´´´

    PS C:\Users\OMISTAJA\Projekt\Testeri\Unit\src\test> west -v build -b native_posix -t run
    ZEPHYR_BASE=c:\ncs\v2.3.0\zephyr (origin: env)
    -- west build: running target run
    cmake version 3.20.5 is OK; minimum version is 3.13.1
    Running CMake: 'C:\ncs\toolchains\v2.3.0\opt\bin\cmake.EXE' --build 'C:\Users\OMISTAJA\Projekt\Testeri\Unit\src\test\build' --target run -- -v
    ninja: error: loading 'build.ninja': No such file or directory

    FATAL ERROR: command exited with status 1: 'C:\ncs\toolchains\v2.3.0\opt\bin\cmake.EXE' --build 'C:\Users\OMISTAJA\Projekt\Testeri\Unit\src\test\build' --target run -- -v

    ´´´

  • Hi Arttu 

    Michal is on vacation so I will be handling the case while he is away. 

    Just so I can be sure that your build system is up an running and that we start with a known working sample. Could you open the sample found in ncs/ncs_versionnrf\/ests/unity/example_test and try to build the example_test? 

    use native_posix  as build target and if it fails post the build log

    Regards

    Runar

  • Hello.
    after running : C:\ncs\v2.6.0\nrf\tests\unity\example_test> west build -b native_posix -t run
    build log:


    ```

    -- west build: generating a build system
    Loading Zephyr default modules (Zephyr base).
    -- Application: C:/ncs/v2.6.0/nrf/tests/unity/example_test
    -- CMake version: 3.21.0
    -- Using NCS Toolchain 2.6.20240304.889616714482 for building. (C:/ncs/toolchains/cf2149caf2/cmake)
    -- Found Python3: C:/ncs/toolchains/cf2149caf2/opt/bin/python.exe (found suitable version "3.9.13", minimum required is "3.8") found components: Interpreter
    -- Cache files will be written to: C:/ncs/v2.6.0/zephyr/.cache
    -- Zephyr version: 3.5.99 (C:/ncs/v2.6.0/zephyr)
    -- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
    -- Board: native_posix
    -- Found host-tools: zephyr 0.16.5 (C:/ncs/toolchains/cf2149caf2/opt/zephyr-sdk)
    -- Found toolchain: host (gcc/ld)
    -- Found Dtc: C:/ncs/toolchains/cf2149caf2/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6")
    -- Found BOARD.dts: C:/ncs/v2.6.0/zephyr/boards/posix/native_posix/native_posix.dts
    -- Generated zephyr.dts: C:/ncs/v2.6.0/nrf/tests/unity/example_test/build/zephyr/zephyr.dts
    -- Generated devicetree_generated.h: C:/ncs/v2.6.0/nrf/tests/unity/example_test/build/zephyr/include/generated/devicetree_generated.h
    -- Including generated dts.cmake file: C:/ncs/v2.6.0/nrf/tests/unity/example_test/build/zephyr/dts.cmake
    Parsing C:/ncs/v2.6.0/nrf/tests/unity/example_test/Kconfig
    Loaded configuration 'C:/ncs/v2.6.0/zephyr/boards/posix/native_posix/native_posix_defconfig'
    Merged configuration 'C:/ncs/v2.6.0/nrf/tests/unity/example_test/prj.conf'
    Configuration saved to 'C:/ncs/v2.6.0/nrf/tests/unity/example_test/build/zephyr/.config'
    Kconfig header saved to 'C:/ncs/v2.6.0/nrf/tests/unity/example_test/build/zephyr/include/generated/autoconf.h'
    -- Found GnuLd: c:/programdata/chocolatey/lib/mingw/tools/install/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.2.0/../../../../x86_64-w64-mingw32/bin/ld.bfd.exe (found version "2.39")
    -- The C compiler identification is GNU 12.2.0
    -- The CXX compiler identification is GNU 12.2.0
    -- The ASM compiler identification is GNU
    -- Found assembler: C:/ProgramData/chocolatey/bin/gcc.exe
    CMake Error at C:/ncs/v2.6.0/zephyr/arch/posix/CMakeLists.txt:4 (message):
    The POSIX architecture only works on Linux. If on Windows or macOS
    consider using a virtual machine to run a Linux guest.


    -- Configuring incomplete, errors occurred!
    See also "C:/ncs/v2.6.0/nrf/tests/unity/example_test/build/CMakeFiles/CMakeOutput.log".
    ←[91mFATAL ERROR: command exited with status 1: 'C:\ncs\toolchains\cf2149caf2\opt\bin\cmake.EXE' -DWEST_PYTHON=C:/ncs/toolchains/cf2149caf2/opt/bin/python.exe '-BC:\ncs\v2.6.0\nrf\tests\unity\example_test\build' -GNinja -DBOARD=native_posix '-SC:\ncs\v2.6.0\nrf\tests\unity\example_test'
    ←[0m
    PS C:\ncs\v2.6.0\nrf\tests\unity\example_test>

    ```
    So I cant use native_posix in windows?

  • I can execute tests by flashing them to nrf9160dk. I am wondering if im using windows is this my only option? Is there a way to use native_posix, native_sim or qemu cortex_m3 simulation layers in windows. This would speed up the test process alot.

    Thanks in advance.

Reply Children
Related