标签: unity-test-framework

如何以普通用户身份运行 bundle install

我正在尝试使用bundle install. 我不是 Ruby 用户——这是我第一次真正涉足运行 rake。我只是尝试使用 ThrowtheSwitch.org 中使用 Rake 等的一些软件包。

几天前我最初使用以下方法安装了 ruby​​:

sudo apt-get install ruby-full
Run Code Online (Sandbox Code Playgroud)

这让我可以在 Unity 测试框架中使用 rake。现在我想使用 CMock。使用 CMock 的说明说cd进入目录然后

$ bundle install
$ bundle exec rake
Run Code Online (Sandbox Code Playgroud)

所以我使用以下方法安装捆绑器:

$ sudo apt-get install bundler
Run Code Online (Sandbox Code Playgroud)

但是然后运行bundle install不断地询问我的密码。所以我尝试:

$ gem install bundler
Run Code Online (Sandbox Code Playgroud)

对 /var/lib/gems/1.9.1 的写权限失败。所以我尝试:

$ sudo gem install bundler
Run Code Online (Sandbox Code Playgroud)

安装正常,所以我再试bundle install一次。但仍然不断被要求输入我的密码。所以我尝试:

$ sudo bundle install
Run Code Online (Sandbox Code Playgroud)

并得到一个警告,我不应该以 root 身份运行 bundler:

不要以 root 身份运行 Bundler。如果需要,Bundler 可以请求 sudo,并且以 root 用户身份安装你的 bundle 会破坏该机器上所有非 root 用户的应用程序。 …

ruby bundler unity-test-framework

7
推荐指数
2
解决办法
3735
查看次数

Unity 框架单元测试未定义对“setUp”和“tearDown”的引用

我从Unity for C 单元测试库中复制了最简单的代码,并设置了一个非常基本的测试,我从站点复制并粘贴了该代码:

#include "unity/src/unity.h"

int main(void)
{
    UNITY_BEGIN();
    int a = 1;
    TEST_ASSERT( a == 1 ); //this one will pass
    TEST_ASSERT( a == 2 ); //this one will fail
    return UNITY_END();
}
Run Code Online (Sandbox Code Playgroud)

我在终端中输入的内容:

gcc TestDumbExample.c ./unity/src/unity.c -o Test
Run Code Online (Sandbox Code Playgroud)

我在终端中收到此错误消息:

/tmp/ccqgFGn8.o: In function `UnityDefaultTestRun':
unity.c:(.text+0x26af): undefined reference to `setUp'
unity.c:(.text+0x26ca): undefined reference to `tearDown' collect2:
error: ld returned 1 exit status

Unsure why this error is occurring and it has undefined references.
Run Code Online (Sandbox Code Playgroud)

c gcc unit-testing compiler-errors unity-test-framework

4
推荐指数
1
解决办法
1817
查看次数

如何手动指定 Ceedling 无法获取的源文件?

我正在为嵌入式应用程序开发一个功能,我正在使用 Ceedling(它构建在 Unity 测试框架之上)来测试它。我遇到的一个问题是我需要使用 C 源文件中的功能,而 Ceedling 没有编译/链接到我的单元测试文件。

根据 Ceedling 文档:

Ceedling 通过包含在每个测试文件中的 #include 列表知道要编译哪些文件并将其链接到每个单独的测试可执行文件中。与测试文件中包含的头文件对应的配置搜索目录中的任何 C 源文件都将被编译并链接到生成的测试夹具可执行文件中。

问题是我在单元测试中包含了一个头文件“RTOS.h”来访问 embOS RTOS 函数,但这些函数是在“RTOSInit.c”和“os7m_tl__dp.a”中定义的,并根据这个文档 Ceedling 只会#include "RTOS.h"在单元测试代码中看到“RTOS.c” 。

我正在寻找的是一种在生成测试运行程序可执行文件时手动指定应编译和链接这些附加文件的方法。这似乎是 Ceedling 的一个非常基本的要求,但我从文档中看不到这样做的方法。

我也在Ceedling Github 网站上提出了这个问题

作为参考,我当前的“project.yml”文件(由 Ceedling 使用)如下:

: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: …
Run Code Online (Sandbox Code Playgroud)

c unit-testing unity-test-framework

3
推荐指数
1
解决办法
3228
查看次数

如何为IAR嵌入式工作台项目配置Ceedling?

我正在尝试为嵌入式应用程序开发一项新功能,并且我想使用测试驱动的方法来进行。

该项目使用纯C语言编写,并且正在使用IAR Embedded Workbench 6.60.1.5104开发。我的目标是LPC1788,这是一种Cortex-M3设备,所有开发工作都是在64位Windows 7计算机上完成的。现在,我更赞成让单元测试在PC上而不是目标硬件上运行(RAM相当有限)。

我遇到了一本关于嵌入式C的测试驱动开发的有用的书,它向我指出了Unity,CppUTest,Ceedling等工具。研究了这些内容之后,我认为我的最佳选择是配置Ceedling(使用Unity )用于我的项目。但是,我不确定要配置Ceedling与我当前的IAR工具链一起使用时需要采取什么步骤。

我已经安装了Ceedling并创建了“ blinky”示例项目,并且尝试使用IAR工具链进行构建和测试。我已添加iccarm.exe到路径并按blinky/project.yml如下所示进行编辑:

---

# Notes:
# This is a fully tested project that demonstrates the use
# of a timer ISR to blink the on board LED of an Arduino UNO
:project:
  :use_exceptions: FALSE
  :use_test_preprocessor: TRUE
  :use_auxiliary_dependencies: TRUE
  :build_root: build
  :release_build: TRUE
  :test_file_prefix: test_

#You'll have to specify these
:environment:
  - :mcu: atmega328p
  - :f_cpu: 16000000UL 
  - :serial_port: COM8  #change this to the serial port you …
Run Code Online (Sandbox Code Playgroud)

c embedded tdd iar unity-test-framework

1
推荐指数
1
解决办法
2443
查看次数