我是新的测试嵌入式系统与放弃。我想知道是否有一个好的地方开始学习如何使用割让。
我正在为一个CubeSat项目开发一个嵌入式系统,我们需要一种方法来测试我们的代码。
发布于 2020-05-05 16:25:50
首先,您应该理解的是,首先也是最重要的是,Ceedling或任何单元测试框架都是为了测试您的代码,并扩展到您的最终项目。您通常使用某种基于标准的编译器在PC上测试代码,而不一定是嵌入式系统的交叉编译器。您可以在目标上运行割让生成的测试,但您可能不想这样做。
关于这个主题的最好的书(并不完美,但仍然很好)是James .Grenning‘(实用程序员)。
我有一个关于在旧窗户在这里下设置的个人GIST。主要是关于让Ruby和GCC上窗户的事。
在Linux下,Ceedling非常容易安装和运行。
就这样。如果您正在适应一个新的项目,您将需要摆弄project.yml文件,以告诉放弃您的源文件和包含文件,以及您希望您的测试文件去向。对于某些项目结构来说,这可能是一种挑战,但如果所有这些都失败了,您只需将任何文件夹按名称放入您的project.yml文件中(这不是最好的,而是疯狂的混乱项目的最终退路),还有其他一些学习曲线的东西,比如割让test_xxx.c文件,它们包含您的测试,但也像链接器控制文件。假定test_xxx.c文件中的每个包含文件都有一个具有相同基名的相应的翻译单元(.c文件)。Ceedling将搜索出它并将其编译到您的测试中。如果您想要排除该代码,但需要一些依赖项,则需要更改包含文件名以包含单词模仿接口,以便foo.h成为mock_foo.h,并为头中所有声明的函数创建模拟函数。如果没有header/tranalation_unit名称对,则可以通过将文件名放入名为TEST_FILE的宏中来告诉ceedling编译和链接文件。因此,如果您没有foo.h但是需要foo.c:
TEST_FILE("foo.c")在扔开关页面上还有很多其他很好的资源。希望这能有所帮助。我从来不需要直接从github中提取这个工具,但是如果您想给他们发送补丁,我想这是另一种方式,但是他们花费了太多的精力使其摩擦--减少设置和使用,我将首先从ruby方法开始。
另外请注意,现在module_generator插件中有一些很酷的单元测试钩子,可以自动生成用于测试的存根,这在目标测试中可能非常有用。
发布于 2020-02-13 22:10:46
有很多种方法可以进入它。我的首选是克隆割让(git clone https://github.com/ThrowTheSwitch/Ceedling.git && git submodule update --init --recursive)并运行一个示例来查看它是如何工作的。
要使示例/temp_传感器工作,您需要进行三个修改:
../../plugins"../.."diy/test的行下面是我对主服务器(git commit 09a04cb55a86)所做的修改的区别:
diff --git a/examples/temp_sensor/project.yml b/examples/temp_sensor/project.yml
index ec9a45e..a327f5b 100644
--- a/examples/temp_sensor/project.yml
+++ b/examples/temp_sensor/project.yml
@@ -58,7 +58,7 @@
:plugins:
:load_paths:
- - vendor/ceedling/plugins
+ - ../../plugins
:enabled:
- stdout_pretty_tests_report
- module_generator
diff --git a/examples/temp_sensor/rakefile.rb b/examples/temp_sensor/rakefile.rb
index 1b534d2..82d2e64 100755
--- a/examples/temp_sensor/rakefile.rb
+++ b/examples/temp_sensor/rakefile.rb
@@ -1,4 +1,4 @@
-PROJECT_CEEDLING_ROOT = "vendor/ceedling"
+PROJECT_CEEDLING_ROOT = "../.."
load "#{PROJECT_CEEDLING_ROOT}/lib/ceedling.rb"
Ceedling.load_project
diff --git a/lib/ceedling/rakefile.rb b/lib/ceedling/rakefile.rb
index 37001ba..be6b620 100644
--- a/lib/ceedling/rakefile.rb
+++ b/lib/ceedling/rakefile.rb
@@ -9,6 +9,7 @@ CEEDLING_RELEASE = File.join(CEEDLING_ROOT, 'release')
$LOAD_PATH.unshift( CEEDLING_LIB )
$LOAD_PATH.unshift( File.join(CEEDLING_VENDOR, 'unity/auto') )
$LOAD_PATH.unshift( File.join(CEEDLING_VENDOR, 'diy/lib') )
+$LOAD_PATH.unshift( File.join(CEEDLING_VENDOR, 'diy/test') )
$LOAD_PATH.unshift( File.join(CEEDLING_VENDOR, 'cmock/lib') )
$LOAD_PATH.unshift( File.join(CEEDLING_VENDOR, 'deep_merge/lib') )通过在rake test中运行examples/temp_sensor来运行该示例。
您需要为temp_sensor示例安装ruby (用于rake)和gcc。
一旦确定了example/temp_sensor/rakefile.rb和example/temp_sensor/project.yml文件的格式,关键工作就在examples/temp_sensor/test/Test...文件中。
https://stackoverflow.com/questions/60160332
复制相似问题