Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用外部单元测试布局arduino代码文件_Arduino_Avr_Googletest - Fatal编程技术网

如何使用外部单元测试布局arduino代码文件

如何使用外部单元测试布局arduino代码文件,arduino,avr,googletest,Arduino,Avr,Googletest,我有三个arduino项目的代码文件: main.ino <-- main sketch helper.cpp <-- helper functions, no avr code helper_test.cpp <-- unit test for helpers main.ino您需要创建两个独立的项目。一个项目将包含您的生产代码。它将包含以下文件: main.ino <-- main sketch helper.h <-- header for hel

我有三个arduino项目的代码文件:

main.ino  <-- main sketch
helper.cpp  <-- helper functions, no avr code
helper_test.cpp  <-- unit test for helpers

main.ino您需要创建两个独立的项目。一个项目将包含您的生产代码。它将包含以下文件:

main.ino  <-- main sketch
helper.h  <-- header for helper functions
helper.cpp  <-- implementation for helper functions

main.ino您需要创建两个独立的项目。一个项目将包含您的生产代码。它将包含以下文件:

main.ino  <-- main sketch
helper.h  <-- header for helper functions
helper.cpp  <-- implementation for helper functions

main.ino就让他把它包括进去,但把所有的代码都排除在外。我的意思是:

File test_enablers.h
#define INCLUDE_HELPER_TEST

File helper_test.cpp
#include "test_enablers.h"
#ifdef INCLUDE_HELPER_TEST
... your helper test code
#endif /* INCLUDE_HELPER_TEST */
您可以添加任意数量的测试文件;只需在.h文件中添加标志

如果要禁用测试文件,只需注释
#define
,文件将不会被编译

如果您想排除某些其他文件中的某些代码(例如,main中的setup和loop函数,因为您已经在测试中实现了它),只需编写

File main.ino
#include "test_enablers.h"
#ifndef INCLUDE_HELPER_TEST
... your production setup and loop
#endif /* INCLUDE_HELPER_TEST */

(注意,
ifndef
代替了
ifdef

让他把它包括进去,但排除所有的代码。我的意思是:

File test_enablers.h
#define INCLUDE_HELPER_TEST

File helper_test.cpp
#include "test_enablers.h"
#ifdef INCLUDE_HELPER_TEST
... your helper test code
#endif /* INCLUDE_HELPER_TEST */
您可以添加任意数量的测试文件;只需在.h文件中添加标志

如果要禁用测试文件,只需注释
#define
,文件将不会被编译

如果您想排除某些其他文件中的某些代码(例如,main中的setup和loop函数,因为您已经在测试中实现了它),只需编写

File main.ino
#include "test_enablers.h"
#ifndef INCLUDE_HELPER_TEST
... your production setup and loop
#endif /* INCLUDE_HELPER_TEST */

(注意,
ifndef
代替了
ifdef

我不认为Arduino编译器(和相关系统)是用来处理单元测试的,我必须构建我在中写过的


为了实现这一点,您需要将大部分代码放在一个库中,单元测试将存储为该库的一个子目录,名为
test/
。您可以通过将它们放在库的
examples/
目录中来测试完整的草图,但只有编译可以在这些库上进行测试。

我不认为Arduino编译器(和相关系统)是为处理单元测试而设置的,我必须构建我在中写过的


为此,您需要将大部分代码放在库中,单元测试将存储为该库的一个子目录,名为
test/
。您可以将完整的草图放在库的
examples/
目录中进行测试,但只有编译可以在这些草图上进行测试。

如果您想取消编译it测试,只需创建将要执行一项任务的代码。您可以购买逻辑分析仪并检查端口的输出,以查看是否传递了正确的信号。由于Arduinos的性质,在大多数情况下,单元测试必须以不同的方式进行。希望这能有所帮助。

如果您想进行单元测试,只需创建将要执行的代码即可可爱的一个任务。你可以购买一个逻辑分析仪,检查端口的输出,看看是否传递了正确的信号。由于Arduinos的性质,在大多数情况下,单元测试必须以不同的方式进行。希望这会有所帮助。

这比在helper_test.cpp中注释所有内容好吗?@u实际上,它们是相同的,但这是唉,它更具可读性,更“正确”这比在helper_test.cpp中注释所有内容好吗?@ʞɔıu实际上它们是一样的,但这样它更具可读性,更“正确”我从web下载或参与的每个项目(使用单元测试)将测试与生产代码分开。使用define一开始可能看起来很吸引人,但您的项目会增加,带有测试的
cpp
文件的数量也会增加。包含几十个代码完全被排除在外的
cpp
文件是没有意义的。更不用说您必须不断添加/删除该define以排除ude/在您的构建中包含测试。我目前正在考虑相同的问题。我希望构建依赖于我自己的库的草图,这些库与主草图分离,并生活在一个可以进行单元测试的项目中。我认为库项目应该包含一个子文件夹,可以直接从Ardui指向没有,但是整个项目增加了GTestand其他测试,所以在这个项目的上下文中,你可以测试这个库,模拟任何硬件块。我现在正在这里通过一个例子来处理:你解决了你的问题吗?如果有帮助的话,考虑接受其中一个答案。我从Web上下载的每一个项目。或处理(使用单元测试)将测试与生产代码分开。使用define一开始可能看起来很吸引人,但您的项目会增加,带有测试的
cpp
文件的数量也会增加。包含几十个代码完全被排除在外的
cpp
文件是没有意义的。更不用说您必须不断添加/删除该define以排除ude/在您的构建中包含测试。我目前正在考虑相同的问题。我希望构建依赖于我自己的库的草图,这些库与主草图分离,并生活在一个可以进行单元测试的项目中。我认为库项目应该包含一个子文件夹,可以直接从Ardui指向没有,但是整个项目增加了GTestand其他测试,所以在这个项目的上下文中,你可以测试这个库,模拟任何硬件块。我现在在这里通过一个例子来处理:你解决了你的问题吗?如果有帮助的话,考虑接受其中的一个答案。